PIVOT 了解一下
;WITH temp_table AS(
SELECT 1 ID,1 TagRelationID,5 Tag_ID
UNION ALL
SELECT 2,1,2
UNION ALL
SELECT 3,1,17
UNION ALL
SELECT 4,1,19
UNION ALL
SELECT 5,1,20
UNION ALL
SELECT 6,1,21
UNION ALL
SELECT 7,2,5
UNION ALL
SELECT 8,2,2
UNION ALL
SELECT 9,2,17
UNION ALL
SELECT 10,2,22
)
SELECT * FROM (
SELECT
TagRelationID ,
MAX([2]) [col_2] ,
MAX([5]) [col_5] ,
MAX([17]) [col_17] ,
MAX([19]) [col_19]
FROM temp_table t PIVOT( MAX(Tag_ID) FOR Tag_ID IN ( [2], [5], [17], [19] ) ) y
GROUP BY TagRelationID
)t WHERE t.col_2=2 AND t.col_5=5 AND t.col_17=17 AND t.col_19=19;