基于数据的枢轴

时间:2017-06-19 09:58:18

标签: sql sql-server tsql pivot

如何实现此输出

TableName:测试

Code      Description    
A          Apple   
B          Ball
C          Cat

输出:查询

Apple        Ball     Cat
A            B        C

1 个答案:

答案 0 :(得分:1)

如果您使用的是SQL服务器,请使用以下PIVOT表:

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) 
相关问题