Преобразование строк в столбец на SQL сервере с помощью Pivot - PullRequest
1 голос
/ 16 июня 2020

Я новичок в pivot, у меня есть таблица, подобная приведенной ниже. Он имеет номер модели и группу без деталей. Таблица содержит 10 отдельных групп.

enter image description here

Я пытаюсь получить такой результат. Просто хочу перечислить всю модель в каждой группе.

enter image description here

Я пробовал с этим SQL запросом, но здесь я частично получаю результат . Он отображает только одну строку.

SELECT *
FROM (
    SELECT DISTINCT ModelNo
        ,GroupNo
    FROM #Table
    ) d
pivot(max(ModelNo) FOR GroupNo IN (
            [1]
            ,[2]
            ,[3]
            ,[4]
            ,[5]
            ,[6]
            ,[7]
            ,[8]
            ,[9]
            ,[10]
            )) piv

Я не уверен, где я пропустил. Пожалуйста, помогите мне разобраться.

1 Ответ

1 голос
/ 16 июня 2020

Я рекомендую условное агрегирование вместо pivot - это просто гораздо более универсально.

Вам нужно row_number(), поэтому запрос выглядит так:

select max(case when groupno = 1 then modelno end) as group_01,
       max(case when groupno = 2 then modelno end) as group_02,
       . . .
from (select t.*,
             row_number() over (partition by groupno order by modelno) as seqnum
      from t
     ) t
group by seqnum;

You также можно включить эту идею в pivot.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...