Сводка для нескольких столбцов в SQL Server - PullRequest
0 голосов
/ 20 мая 2018

У меня есть 3 области:

Melt, HSM, LSM

каждый заказ производится в некоторых областях со следующими данными:

Start Date, Finish Date, Weight

У меня есть View в SQL Server 2012 (верхнее изображение)Как я могу создать свод, который генерирует нижнее изображение, используя TSQL?enter image description here

1 Ответ

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

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

SELECT [Order],
    MAX(CASE WHEN Area = 'Melt' THEN StartDate   END) AS Melt_SDate,
    MAX(CASE WHEN Area = 'Melt' THEN FinisthDate END) AS Melt_FDate,
    MAX(CASE WHEN Area = 'Melt' THEN Weight      END) AS Melt_Weight,

    MAX(CASE WHEN Area = 'HSM' THEN StartDate    END) AS HSM_SDate,
    MAX(CASE WHEN Area = 'HSM' THEN FinisthDa    END) AS HSM_FDate,
    MAX(CASE WHEN Area = 'HSM' THEN Weight       END) AS HSM_Weight,

    MAX(CASE WHEN Area = 'LSM' THEN StartDate    END) AS LSM_SDate,
    MAX(CASE WHEN Area = 'LSM' THEN FinisthDate  END) AS LSM_FDate,
    MAX(CASE WHEN Area = 'LSM' THEN Weight       END) AS LSM_Weight
FROM tab_name
GROUP BY [Order];   -- ORDER is reserved word, you should avoid such identifiers;

Чтобы сделать его более кратким, вы можете использовать IIF:

MAX(CASE WHEN Area = 'Melt' THEN StartDate   END) AS Melt_SDate,
<=>
MAX(IIF(Area='Melt',StartDate,NULL)) AS Melt_SDate,
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...