Рассчитать количество товара в одной таблице SQL Сервер (Сумма неоплаченных товаров) - PullRequest
0 голосов
/ 07 апреля 2020

Я бы задал вопрос о сумме на SQL Сервере.

У меня есть таблица, в которой хранятся заказы, подобные этому:

    Code     |    items    |    Kinds      |   Qty  |
-------------+-------------+---------------+--------+
PUR/2004/001 |    b001     |    PURCHASE   |   5    |
PUR/2004/001 |    b002     |    PURCHASE   |   10   |
PUR/2004/002 |    b001     |    PURCHASE   |   3    |
REC/2004/001 |    b001     |    RECEIVE    |   4    |

Мне нужен запрос для вычисления оставшихся выдающийся из каждого элемента на столе.

Результат, который я хочу получить, выглядит следующим образом:

    items    |  Outstanding Order  |
-------------+---------------------+
    b001     |          4          |
    b002     |          10         |

Ответы [ 2 ]

1 голос
/ 07 апреля 2020

Несколько иной способ условного агрегирования:

SELECT
    items,
    SUM(CASE WHEN Kinds = 'PURCHASE' THEN Qty
             WHEN Kinds = 'RECEIVE'  THEN -Qty
        END) AS [Outstanding Order]

FROM Table1
GROUP BY
    items;

РЕЗУЛЬТАТ:

items   Outstanding Order
b001    4
b002    10

DEMO

1 голос
/ 07 апреля 2020

Мы можем использовать условное агрегирование здесь:

SELECT
    items,
    SUM(CASE WHEN Kinds = 'PURCHASE' THEN Qty ELSE 0 END) -
        SUM(CASE WHEN Kinds = 'RECEIVE' THEN Qty ELSE 0 END) AS [Outstanding Order]
FROM yourTable
GROUP BY
    items;

screen capture of demo below

Демо

...