Посчитать остаток денежных средств на начало дня 15.04.2001 на каждом пункте приема для базы данных с отчетностью не чаще одного раза в день. Вывод: пункт, остаток.
Задача 2.3.1
Консоль
SELECT i.point, CASE inc
WHEN NULL
THEN 0
ELSE inc
END -
CASE out
WHEN NULL
THEN 0
ELSE out
END
FROM ( SELECT point, SUM ( inc) inc
FROM Income_o
WHERE '20010415' > date
GROUP BY point
) AS I FULL JOIN
( SELECT point, SUM ( out) out
FROM Outcome_o
WHERE '20010415' > date
GROUP BY point
) AS III ON III.point = I.point;
Эта задача во многом аналогична предыдущей задаче №59 . По сути, здесь дополнительно используется лишь отбор по дате. В связи с этим мы хотим обратить внимание на ее представление в запросе. Дело в том, что в предикате сравнивается строка с полем типа datetime. В Cистема управления реляционными базами данных (СУБД), разработанная корпорацией Microsoft. Язык структурированных запросов) — универсальный компьютерный язык, применяемый для создания, модификации и управления данными в реляционных базах данных.
SQL Server имеется функция CONVERT , которая позволяет преобразовать строковое представление даты/времени к этому типу, используя различные форматы представления даты. Однако строковое представление в виде год месяц день, которое используется в рассматриваемом решении, всегда будет правильно преобразовываться неявно к типу datetime вне зависимости от настроек сервера [5 ].
Кто разобрался с ошибкой в предыдущей задаче, наверняка, увидел здесь попытку ее исправить. К сожалению, попытку неудачную, что, с другой стороны, дает вам возможность еще раз проверить себя.
ПиР
Решить упражнение на SQL-EX.RU