Я пытаюсь рассчитать запас по продукту, который склад имел с течением времени. У меня есть информация о сегодняшнем запасе, а также о количестве проданной и купленной продукции по дням. Таким образом, расчет для вчерашних значений будет следующим: Yesterday_stock=Запас-вчера_проданное_количество+вчера_купленное_количество. Моя проблема в том, что я должен где-то сохранить количество повседневных запасов, чтобы рассчитать запас предыдущего дня. Я обнаружил, что для этого я могу использовать предложение over sql с порядком. Но к сожалению у меня sql server 2008 и это не вариант.
Таблицы: Prdamount, который содержит текущий запас для каждого продукта (StuPrdID) и если он заблокирован по какой-либо причине.
|-------------- |------------------|---------------
| StuPrdID | StuQAmount |prdBlockingReason
|---------------|------------------|-------------
| 12345| 16 |
|---------------|------------------|--------------
| 08889| 12 | expired
|---------------|------------------|------------
Таблица Moves, которая содержит информацию о вставках и выводах продуктов. Если значение поля MoveCase равно 1, то это выходной ход, если 2, то это купленное количество. Перемещает фиктивные данные таблицы:
|-------------- |--------------------- -|--------|-------
|MoveItemCode | MoveDate |MoveCase|MoveRealQty
|---------------|---------------------- |--------|-------
| 12345 |2018-06-24 00:00:00.000| 1 |14
|---------------|-----------------------|--------|--------
| 08889 |2018-06-24 00:00:00.000| 2 |578
|---------------|-----------------------|--------|--------
и таблица Product с информацией, связанной с данными:
|-------------- |------------------|
| PrdCode | PrdDespription |
|---------------|------------------|
| 12345| Orange juice|
|---------------|------------------|
| 08889| Chocolate|
|---------------|------------------|
Я хочу такой вывод:
|------------|--------------------- -|--------|--------------|------------
|Prdcode | PrdDescription |Stock |Stock 18/07/03|Stock 18/7/02
|------------|---------------------- |--------|--------------|------------
| 12345 |Orange Juice | 80 |50 34
|----------- |-----------------------|--------|--------------|------------
| 08889 |Chocolate | 45 |82 17
|------------|-----------------------|--------|--------------|-------------
этот запрос дает мне бегущий запас:
select
product.PrdCode,
product.PrdDescr,
SUM(StuQAmount) as Stock
from prdamount
left join product on (product.PrdID=prdamount.StuPrdID)
where prdamount.prdBlockingReason=' '
group by product.PrdCode,product.PrdDescr
order by product.PrdCode asc
Этот запрос дает мне количество проданных продуктов в день:
select
moves.MoveItemCode,
prd.PrdDescr,
moves.MoveDate,
SUM(MoveRealQty) as 'sold_quantity'
from moves
left join prd on (moves.MoveItemCode=product.PrdCode)
where (moves.MoveDate>'2018-06-01' and and moves.MoveCase=1)
group by moves.MoveItemCode,product.PrdDescr,moves.MoveDate
order by moves.MoveItemCode asc,moves.MoveDate asc
И этот запрос дает мне количество покупок по продуктам в день:
select
moves.MoveItemCode,
prd.PrdDescr,
moves.MoveDate,
SUM(MoveRealQty) as 'Purchased_Quantity'
from Moves
left join product on (moves.MoveItemCode=product.PrdCode)
where (moves.MoveDate>'2018-06-01' and moves.MoveCase=2)
group by moves.MoveItemCode,product.PrdDescr,moves.MoveDate
order by moves.MoveItemCode asc,moves.MoveDate asc
Я попытался объединить эти 3 запроса в один с помощью подзапросов, но это не сработало. Итак, как я могу добиться желаемого результата? Извините, если вопрос глупый, я новичок в sql.