Добавление столбцов для ссылки на идентификатор в SQL - PullRequest
0 голосов
/ 06 декабря 2018

Я искал ответ на этот вопрос, но пока не получилось.

В этой таблице я хочу запросить:

mainId     secondaryId
----------------------
01000        02000
01000        02001
01000        02002
01001        02003
01001        02004
01002        02005

Я хочу, чтобы мой запрос возвратил это:

mainId     secondaryId_01     secondaryId_02     secondaryId_03
---------------------------------------------------------------
01000        02000               02001               02002
01001        02003               02004                     
01002        02005

Как мне сделать это, самым простым способом?

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Вы можете попробовать использовать PIVOT - он будет работать на сервере sql

with cte as
(
select mainId,secondaryId,row_number() over(partition by mainid order by secondaryid) as rn
from tablename
)

select mainid, pv* from
cte pivot(max(secondaryid) for rn in ([1],[2],[3]))

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

select mainid, max(case when rn=1 then secondaryid) as secondaryid_01,
max(case when rn=2 then secondaryid) as secondaryid_02,
max(case when rn=3 then secondaryid) as secondaryid_03
from cte 
group by mainid
0 голосов
/ 06 декабря 2018

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

select mainid,
       max(case when seq = 1 then secondaryId end) as secondaryId_01,
       max(case when seq = 2 then secondaryId end) as secondaryId_02,
       max(case when seq = 3 then secondaryId end) as secondaryId_03   
from (select t.*,
             row_number() over (partition by mainid order by secondaryId) as seq
      from table t
     ) t
group by mainid; 
...