Баланс товара на складе - решение принимается в виде одного файла (balance.sql), содержащего Transact-SQL с запросом(-ами) для получения ожидаемой выборки.
В базе данных ведется учет прихода/расхода некоторого товара, причем приход и расход хранятся в отдельных таблицах. Необходимо написать sql-запрос(если необходимо, то и несколько запросов, но результирующая выборка должна быть одна), получающий баланс (на конец дня) каждого склада за все даты работы складов.
balance.sql
В базе данных ведется учет прихода/расхода некоторого товара, причем приход и расход хранятся в отдельных таблицах. Необходимо написать sql-запрос(если необходимо, то и несколько запросов, но результирующая выборка должна быть одна), получающий баланс (на конец дня) каждого склада за все даты работы складов.
balance.sql
DECLARE @income AS TABLE ( [wh_id] INT NOT NULL, — номер склада [date] DATETIME NOT NULL, — время поступления товара [value] INT NOT NULL — кол-во товара (положительное значение) ) DECLARE @outcome AS TABLE ( [wh_id] INT NOT NULL, — номер склада [date] DATETIME NOT NULL, — время расхода товара [value] INT NOT NULL — кол-во товара (положительное значение) ) /* Тестовая ситуация */ INSERT INTO @income ( [wh_id], [date], [value] ) VALUES (1, '2010-02-03 10:00:00', 1) , (1, '2010-02-03 11:00:00', 2) , (1, '2010-02-06 10:00:00', 3) , (1, '2010-02-07 10:00:00', 4) INSERT INTO @outcome ( [wh_id], [date], [value] ) VALUES (1, '2010-02-04 12:00:00', 1) , (1, '2010-02-06 12:00:00', 2) , (1, '2010-02-06 13:50:00', 1) , (1, '2010-02-07 14:20:00', 1) , (1, '2010-02-08 12:00:00', 1) /* Ожидаемый результат баланса на конец дня */ /* wh_id date balance 1 2010-02-03 3 1 2010-02-04 2 1 2010-02-05 2 1 2010-02-06 2 1 2010-02-07 5 1 2010-02-08 4 */