loading..
Русский    English
09:41
листать

Упражнение 59 (подсказки и решения)

В решении 2.2.1 не учитывается тот факт, что возможна ситуация, когда на некотором пункте приема может быть только приход, но не быть расхода, то есть в таблице Outcome_o может не быть ни одной строки, относящейся к данному пункту приема. С точки зрения предметной области эта ситуация возможна для вновь открытого пункта приема, когда факт приема денежных средств уже зафиксирован, а факт расхода — еще нет. Тогда выражение в предложении SELECT

  1. ss.inc - dd.out

для такой точки приема станет эквивалентно выражению

  1. ss.inc - NULL

что даст в результате NULL, а не ss.inc, как это должно быть по условиям задачи.

Исправить решение очень легко, переписав ошибочное выражение в виде

  1. (COALESCE (ss.inc, 0) - COALESCE (dd.out, 0) )

что соответствует стандарту, или с помощью функции  Cистема управления реляционными базами данных (СУБД), разработанная корпорацией Microsoft. Язык структурированных запросов) — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных. SQL Server ISNULL:

  1. (ISNULL(ss.inc, 0) - ISNULL(dd.out, 0) )

Перейти к обсуждению задачи 59

Решить задачу на SQL-EX.RU

Bookmark and Share
Тэги:
ALL AND AUTO_INCREMENT AVG battles CASE CAST CHAR CHARINDEX CHECK classes COALESCE Convert COUNT CROSS APPLY CTE DATEDIFF DATENAME DATEPART DATETIME DDL DEFAULT DELETE DISTINCT DML EXCEPT EXISTS EXTRACT FROM FULL JOIN GROUP BY Guadalcanal HAVING IDENTITY IN INNER JOIN insert INTERSECT IS NOT NULL ISNULL laptop LEFT LEFT OUTER JOIN LEN maker MAX MIN MONTH MySQL NOT Больше тэгов
Учебник обновлялся
месяц назад
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.
Rambler's Top100