Anda perlu menggunakan PIVOT
. Anda dapat menggunakan PIVOT STATIS di mana Anda mengetahui nilai kolom yang akan diubah atau PIVOT DINAMIS di mana kolom tidak diketahui hingga waktu eksekusi.
Pivot Statis (Lihat SQL Fiddle dengan 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
Pivot Dinamis (Lihat SQL Fiddle dengan 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)
Keduanya akan menghasilkan hasil yang sama.