Я пытаюсь рассчитать запас по продукту, который имел склад со временем. У меня есть информация о сегодняшнем складе, а также о количестве продуктов, проданных и приобретенных за день. Итак, расчет для вчерашних значений будет:
Yesterday_stock = сток-yesterday_sold_quantity + yesterday_purchased_quantity. Моя проблема в том, что я должен где-то сохранить количество ежедневного запаса, чтобы рассчитать запас предыдущего дня. Я обнаружил, что для того, чтобы сделать это, я мог бы использовать более 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
|---------------|-----------------------|--------|--------
и таблица Продукт с информацией, связанной с данными:
|-------------- |------------------|
| 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