Bạn cần sử dụng PIVOT
. Bạn có thể sử dụng STATIC PIVOT nơi bạn biết giá trị của các cột để biến đổi hoặc DYNAMIC PIVOT trong đó các cột không xác định cho đến thời gian thực thi.
Pivot tĩnh (Xem SQL Fiddle với 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
Xoay vòng động (Xem 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)
Cả hai sẽ tạo ra cùng một kết quả.