Заполните строки предыдущими данными, пока не появятся новые данные - PullRequest
0 голосов
/ 17 октября 2019

У меня есть две таблицы, которые отображают количество товаров, поступающих на место и оставляющих место в двух отдельных таблицах. Мне нужна окончательная таблица, которая дает мне количество, оставшееся после соответствующего входа и выхода на уровне даты с использованием SQL.

In Table

Date        | Product | Received qty
------------------------------------
10-10-2019  | A       | 30
11-10-2019  | A       | 30
12-10-2019  | A       | 30
13-10-2019  | B       | 40
14-10-2019  | B       | 40
Out Table

Date        | Product | Out qty
-------------------------------
12-10-2019  | A       | 10
13-10-2019  | A       | 10
14-10-2019  | A       | 10
15-10-2019  | B       | 20
16-10-2019  | B       | 10

Ожидаемый результат

final table

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Вы хотите full join и накопленную сумму. Я думаю, что логика:

select coalesce(i.date, o.date) as date, 
       coalesce(i.product, o.product) as product,
       coalesce(i.qty, 0) as received,
       coalesce(o.qty, 0) as qty_out,
       (sum(coalesce(i.qty, 0)) over (partition by i.product order by i.date) -
        sum(coalesce(o.qty, 0)) over (partition by o.product order by i.date)
       ) as on_hand

from intable i full join
     outtable o
     on i.date = o.date and i.product = o.product
0 голосов
/ 17 октября 2019

ВЫБРАТЬ i.Data, i.Product, i.Received 'Qty Received', o.Out 'Out qty', (i.Received - o.Out) 'Доступно в руке' FROM InTable i LEFT JOIN OutTable o ONi.Product = o.Product И i.Date = o.Date

...