Bạn sẽ cần thực hiện PIVOT
. Có hai cách để thực hiện việc này với PIVOT, đó là Static Pivot nơi bạn viết mã các cột để chuyển đổi hoặc Dynamic Pivot xác định các cột khi thực thi.
Pivot tĩnh:
SELECT *
FROM
(
SELECT col1, col2
FROM yourTable
) x
PIVOT
(
min(col2)
for col1 in ([A], [B], [C])
)p
Xoay vòng động:
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(col1)
from t1
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT ' + @cols + ' from
(
select col1, col2
from t1
) x
pivot
(
min(col2)
for col1 in (' + @cols + ')
) p '
execute(@query)
Nếu bạn không muốn sử dụng PIVOT
thì bạn có thể thực hiện một loại truy vấn tương tự với CASE
tuyên bố:
select
SUM(CASE WHEN col1 = 'A' THEN col2 END) as A,
SUM(CASE WHEN col1 = 'B' THEN col2 END) as B,
SUM(CASE WHEN col1 = 'C' THEN col2 END) as C
FROM t1