Преобразование трех строк в один ряд - PullRequest
0 голосов
/ 08 октября 2019

Я пытаюсь преобразовать строки в столбцы из таблицы MS SQL ...

моя таблица MS SQL похожа на ...

enter image description here

Я хочу ВЫБРАТЬ вывод, как показано ниже ... Я попытался с помощью сводных таблиц и перекрестного соединения ... к сожалению, не смог сделать это.

enter image description here

любая помощь высоко ценится

1 Ответ

2 голосов
/ 08 октября 2019

Вы можете использовать ROW_NUMBER() в подзапросе для ранжирования записей, а условное агрегирование do во внешнем запросе:

SELECT 
    id,
    SubId,
    MAX(CASE WHEN rn = 1 THEN code END) Code1,
    MAX(CASE WHEN rn = 1 THEN TotalAmount END) Code1TotalAmount,
    MAX(CASE WHEN rn = 1 THEN TotalDays END) Code1TotalDays,
    MAX(CASE WHEN rn = 2 THEN code END) Code2,
    MAX(CASE WHEN rn = 2 THEN TotalAmount END) Code2TotalAmount,
    MAX(CASE WHEN rn = 2 THEN TotalDays END) Code2TotalDays,
    MAX(CASE WHEN rn = 3 THEN code END) Code3,
    MAX(CASE WHEN rn = 3 THEN TotalAmount END) Code3TotalAmount,
    MAX(CASE WHEN rn = 3 THEN TotalDays END) Code3TotalDays
FROM (
    SELECT
        t.*,
        ROW_NUMBER() OVER(PARTITION BY ID, SubId ORDER BY code) rn
    FROM mytable t
) x
GROUP BY ID, SubId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...