SQL SERVER - Разделение столбца на несколько с помощью PIVOT - PullRequest
0 голосов
/ 20 июня 2019

Одна таблица базы данных состоит из столбца значений с идентификатором, который относится к вторичной таблице, которая содержит имя этих значений.Например, у меня есть один получатель с 24 строками, каждая строка имеет отношение к отдельному типу значения по имени.

Я пытаюсь улучшить свои подзапросы, так как я очень плохо знаком с большими сложными запросами, я не могупонять, как разделить эти значения на новые столбцы для этого ОДНОГО получателя.

Я пробовал PIVOT Table, я не совсем уверен, что это лучший способ двигаться вперед, поэтому, если у кого-то есть другие варианты, пожалуйста, дайте мне знать, чтобы я мог исследовать!

текущий запрос производит следующее:

SELECT e.recipientid, 
svr.segvaluebagid, 
svr.segvalueid, 
sv.segid, 
s.NAME, 
sv.value 
FROM   SCHEMA.DB.TABLE e 
   LEFT JOIN SCHEMA.DB.TABLE svr 
   ON svr.segvaluebagid = e.segvaluebagid 
   LEFT JOIN SCHEMA.DB.TABLE sv 
   ON svr.segvalueid = sv.segvalueid 
   LEFT JOIN SCHEMA.DB.TABLE s 
   ON s.segid = sv.segid 
WHERE  e.marketingcampaignid = 01
  AND e.recipientid = 01
  AND s.NAME NOT LIKE '%useragent%' 
GROUP  BY e.recipientid, 
              e.eventid, 
              e.eventtypeid, 
              e.marketingcampaignid, 
              e.jobid, 
              e.segvaluebagid, 
              e.triggerdate, 
              svr.segvaluebagid, 
              svr.segvalueid, 
              sv.segid, 
              s.NAME, 
              sv.value

ID,ID2,ID3,ID4,COL NAME ,COL VALUE
ID,ID2,ID3,ID4,DIFFERENT COL NAME ,DIFFERENT COL VALUE
ID,ID2,ID3,ID4,DIFFERENT COL NAME ,DIFFERENT COL VALUE
ID,ID2,ID3,ID4,DIFFERENT COL NAME ,DIFFERENT COL VALUE
ID,ID2,ID3,ID4,DIFFERENT COL NAME ,DIFFERENT COL VALUE
ID,ID2,ID3,ID4,DIFFERENT COL NAME ,DIFFERENT COL VALUE
ID,ID2,ID3,ID4,DIFFERENT COL NAME ,DIFFERENT COL VALUE

Я включил следующий код PIVOT в свой запрос:

PIVOT(max([value])
FOR [name] IN([COL], 
[COL1], 
[COL2], 
[COL3], 
[COL4], 
[COL5], 
[COL6], 
[COL7], 
[COL8], 
[COL9], 
[COL10]))

И теперь запрос создает новый столбец для каждого значения, также сохраняя каждыйодна строка, подобная следующей:

VALUE,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,VALUE,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,VALUE,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,VALUE,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,VALUE,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
0,0,0,0,0,VALUE,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

Мой идеальный вывод следующий:

VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE,VALUE

Я действительно борюсь с этим, если бы кто-нибудь мог дать немного понимания, я быценю это много.

...