SQL - Как получить окончательное количество групп по единице товара? - PullRequest
0 голосов
/ 08 мая 2018

У меня есть книжный склад, как:

---------------------------------------------------------------------
|   BOOK_ID     |   WAREHOUSE   |   UNITS   |   QTY_IN  |   QTY_OUT |
---------------------------------------------------------------------       
|       1       |       W01     |   PCS     |     5     |     0     | 
---------------------------------------------------------------------
|       2       |       W02     |   BOX     |     1     |     0     |
---------------------------------------------------------------------
|       1       |       W01     |   PCS     |     20    |     0     |
---------------------------------------------------------------------
|       1       |       W01     |   BOX     |     2     |     0     |
---------------------------------------------------------------------
|       1       |       W01     |   PCS     |     0     |     2     |
---------------------------------------------------------------------

Я хочу получить окончательное количество для каждого пункта книги, например:

  • для BOOK_ID 1 ВСЕГО КОЛИЧЕСТВО 2 КОРОБКА, 23 ШТ.
  • для BOOK_ID 2 ИТОГО КОЛИЧЕСТВО составляет 1 КОРОБКА
  • и т. Д.

Это я уже пробовал:

select BOOK_ID, UNITS, WAREHOUSE, sum(QTY_IN) as QTY_IN, sum(QTY_OUT) as QTY_OUT from 
(select BOOK_ID, UNITS, WAREHOUSE, QTY_IN, QTY_OUT
from BOOK_STOCK) d
group by BOOK_ID, UNITS, WAREHOUSE

Пожалуйста, помогите мне, как сгруппировать и суммировать количество? Спасибо.

Ответы [ 2 ]

0 голосов
/ 08 мая 2018

Ниже код должен помочь вам. </p> <pre><code>select BOX.book_id, BOX.TotalQty as BoxFinalQuantity, PCS.TotalQty as PCSFinalQuantity from ( select book_id, units, sum(qty_in-qty_out) as TotalQty from #Books where units like 'BOX' group by book_id, units) BOX full outer join ( select book_id, units, sum(qty_in-qty_out) as TotalQty from #Books where units like 'PCS' group by book_id, units) PCS ON BOX.book_id = Pcs.book_id

0 голосов
/ 08 мая 2018

Используйте case выражения для условного агрегирования:

select BOOK_ID,
       sum(case when units = 'BOX' then QTY_IN - QTY_OUT else 0 end) as QTY_BOX,
       sum(case when units = 'PCS' then QTY_IN - QTY_OUT else 0 end) as QTY_PCS
from BOOK_STOCK
group by BOOK_ID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...