Преобразовать строки в столбцы - PullRequest
0 голосов
/ 08 ноября 2019
select ID, Vehicle from table

Исходный результат:

ID      Vehicle
--------------------
1       Car
1       Bike
1       Scooter
...
1       N.Product

Результат, которого я ожидаю

ID    Vehicle1   Vehicle2   Vehicle3  ....VehicleN
-----------------------------------------------------
1     Car         Bike       Scooter       N.Product

Я просмотрел примеры, связанные с сводкой, но они не помогли. Есть предложения?

Ответы [ 2 ]

1 голос
/ 08 ноября 2019

Вы можете использовать row_number() и сводную или условную агрегацию:

select id,
       max(case when seqnum = 1 then vehicle end) as vehicle_1,
       max(case when seqnum = 2 then vehicle end) as vehicle_2,
       . . .
       max(case when seqnum = n then vehicle end) as vehicle_n
from (select t.*, 
             row_number() over (partition by id order by vehicle) as seqnum
      from t
     ) t
group by id;

Это предполагает, что вы знаете количество столбцов, которое вы хотите в наборе результатов. Если это не так, вам нужно использовать динамический SQL - или объединить транспортные средства в строку.

0 голосов
/ 13 ноября 2019

Я сделал это, создав временную таблицу, затем используя цикл while, добавив столбцы и обновив значения

...