Как развернуть значения в два столбца с помощью оператора CASE - PullRequest
0 голосов
/ 07 ноября 2019

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

Пытался использовать PIVOT

Это часть запроса большего размера, но я хотел бы получить его в виде двух столбцов - один для типа запаса 'A' и один для ''- пустоКак сейчас, это возвращает две строки - по одной для каждого типа акций.

SELECT MATERIAL,
    CASE
        WHEN STOCK_TYPE = 'A'
        THEN 'UNCOVERED QTY'
        ELSE 'BLANK QTY'
    END AS [STOCK TYPE], 
    SUM(QUANTITY) AS 'QUANITTY' 

FROM VW_MRP_ALLOCATION 

WHERE STOCK_TYPE IN ('A','')

AND MATERIAL = '011040'

GROUP BY STOCK_TYPE,
         MATERIAL

Возвращает:

MATERIAL           STOCK TYPE    QUANITTY
------------------ ------------- ---------------------------------------
011040             BLANK QTY     67
011040             UNCOVERED QTY 1301

(2 rows affected)



Я хотел бы вернуть одну строку для материала с двумя столбцами - одну для «Непокрытого количества» и одну для «Пустого количества».

1 Ответ

3 голосов
/ 07 ноября 2019

Просто используйте условное агрегирование:

SELECT MATERIAL,
       SUM(CASE WHEN STOCK_TYPE = 'A' THEN QUANTITY END) as uncovered_qty,
       SUM(CASE WHEN STOCK_TYPE <> 'A' THEN QUANTITY END) as blank_qty
FROM VW_MRP_ALLOCATION 
WHERE STOCK_TYPE IN ('A', '') AND MATERIAL = '011040'
GROUP BY MATERIAL;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...