Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all articles
Browse latest Browse all 7251

Написать запрос, получающий баланс каждого склада за все даты работы складов

$
0
0
Баланс товара на складе - решение принимается в виде одного файла (balance.sql), содержащего Transact-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

*/

Viewing all articles
Browse latest Browse all 7251

Trending Articles