【问题标题】:Pivot based on Data基于数据的透视
【发布时间】:2017-06-19 09:58:18
【问题描述】:

如何实现这个输出

表名:测试

Code      Description    
A          Apple   
B          Ball
C          Cat

输出:查询

Apple        Ball     Cat
A            B        C

【问题讨论】:

  • 你为什么需要这样的东西?
  • 用于网格目的@m.antkowicz
  • @DreamerXD,您使用的是哪个 DBMS?
  • SQL Server 2008 R2

标签: sql sql-server tsql pivot


【解决方案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) 

【讨论】:

  • 如果我的代码没有像 Apple、Ball、Cat 那样被硬编码怎么办?
  • @DreamerXD,在查询中使用动态透视。
  • 老哥怎么不熟悉动态支点
猜你喜欢
  • 2022-10-17
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
  • 2019-01-03
  • 2018-10-22
  • 2017-12-08
  • 1970-01-01
  • 2018-02-23
相关资源
最近更新 更多