loading..
Русский    English
05:54
листать

Упражнение 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

Тэги:
ALL AVG battles CASE CAST CHAR CHARINDEX classes COALESCE Convert COUNT CTE DATEDIFF DATEPART DATETIME DELETE DISTINCT EXCEPT EXISTS EXTRACT FROM FULL JOIN GROUP BY Guadalcanal HAVING IN INNER JOIN insert INTERSECT ISNULL laptop LEFT LEFT OUTER JOIN LEN maker MAX MIN MySQL NOT IN NULL ORDER BY Outcome outcomes OVER PARTITION BY pc PIVOT PostgreSQL printer product Больше тэгов
Учебник обновлялся
несколько дней назад
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.
Rambler's Top100