Ger*_*ton 7 pivot sql-server-2005 dynamic-pivot
我正在对包含以下内容的表进行动态数据透视查询:
size列包含不同的大小,具体取决于OID.
所以,使用这里找到的代码,我把它放在一起:
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 )
Run Code Online (Sandbox Code Playgroud)
除了列标题(大小标签)不在基于bucketnum列的顺序之外,这种方法很有效.这些是基于尺寸的顺序.
我在枢轴后尝试了可选的Order By,但这不起作用.
如何控制列的显示顺序?
谢谢
你需要解决这个问题:
SELECT @listCol = STUFF(( SELECT distinct '], [' + [size]
FROM #t
FOR
XML PATH('')
), 1, 2, '') + ']'
Run Code Online (Sandbox Code Playgroud)
以正确的顺序返回列.您可能必须执行以下操作而不是使用DISTINCT
:
SELECT [size]
FROM #t
GROUP BY [size]
ORDER BY MIN(BucketNum)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
27098 次 |
最近记录: |