Du måste använda en PIVOT
. Du kan använda antingen en STATISK PIVOT där du känner till värdena för kolumnerna som ska transformeras eller en DYNAMISK PIVOT där kolumnerna är okända fram till körningstidpunkten.
Statisk pivot (Se SQL-fiol med 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-fiol med 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)
Båda kommer att generera samma resultat.