Du skal bruge en PIVOT
. Du kan bruge enten en STATISK PIVOT, hvor du kender værdierne for de kolonner, der skal transformeres, eller en DYNAMISK PIVOT, hvor kolonnerne er ukendte indtil udførelsestidspunktet.
Statisk pivot (Se SQL Fiddle with Demo ):
select *
from
(
select memid, Condition_id, Condition_Result
from t
) x
pivot
(
sum(condition_result)
for condition_id in ([C1], [C2], [C3], [C4])
) p
Dynamisk pivot (Se SQL Fiddle with Demo ):
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.condition_id)
FROM t c
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT memid, ' + @cols + ' from
(
select MemId, Condition_id, condition_result
from t
) x
pivot
(
sum(condition_result)
for condition_id in (' + @cols + ')
) p '
execute(@query)
Begge vil generere de samme resultater.