【发布时间】:2009-07-13 21:16:28
【问题描述】:
我正在对包含以下内容的表进行动态数据透视查询:
- OID - 订单 ID
- 尺寸 - 产品尺寸
- BucketNum - 大小的顺序 应该去
- 数量 - 订购数量
大小列包含不同的大小,具体取决于 OID。
所以,使用找到的代码here,我把它放在一起:
DECLARE @listCol VARCHAR(2000)
DECLARE @query VARCHAR(4000)
SELECT @listCol = STUFF(( SELECT distinct '], [' + [size]
FROM #t
FOR
XML PATH('')
), 1, 2, '') + ']'
SET @query = 'SELECT * FROM
(SELECT OID, [size], [quantity]
FROM #t
) src
PIVOT (SUM(quantity) FOR Size
IN (' + @listCol + ')) AS pvt'
EXECUTE ( @query )
这很好用,只是列标题(大小标签)不是基于 bucketnum 列的顺序。这些是基于大小的顺序。
我已尝试在数据透视后使用可选的 Order By,但这不起作用。
如何控制列的显示顺序?
谢谢
【问题讨论】:
标签: sql-server-2005 pivot dynamic-pivot