基于数据的透视

Pivot based on Data

如何实现此输出

表名:测试

Code      Description    
A          Apple   
B          Ball
C          Cat

输出:查询

Apple        Ball     Cat
A            B        C

如果您正在使用 SQL 服务器意味着在 PIVOT table 下使用:

CREATE TABLE #Table(Code VARCHAR(1), Description  VARCHAR(15) )

INSERT INTO #Table(Code , Description )
SELECT 'A','Apple' UNION ALL  
SELECT 'B','Ball' UNION ALL
SELECT 'C','Cat'

SELECT *
FROM 
(
  SELECT Code , Description
  FROM #Table
) A
PIVOT
(
   MAX(Code) FOR Description IN ([Apple],[Ball],[Cat])
)pvt

编辑:对于动态枢轴

DECLARE @DynamicString VARCHAR(MAX) = '' , @DynamicPvt VARCHAR(MAX) = ''

SELECT @DynamicString = 
(
  SELECT STUFF ((SELECT ',' + RTRIM(Description) FROM #Table FOR XML 
  PATH('')),1,1,'')
)

SET @DynamicPvt = 'SELECT * 
FROM 
(
   SELECT Code , Description FROM #Table
)A
PIVOT
(
  MAX(Code) FOR Description IN ('+@DynamicString+')
)
PVt'

EXEC (@DynamicPvt)