相关疑难解决方法(0)

SQL Dynamic Pivot - 如何对列进行排序

我正在对包含以下内容的表进行动态数据透视查询:

  • OID - OrderID
  • 尺寸 - 产品尺寸
  • BucketNum - 大小的顺序
  • 数量 - 订购了多少

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,但这不起作用.

如何控制列的显示顺序?

谢谢

pivot sql-server-2005 dynamic-pivot

7
推荐指数
1
解决办法
3万
查看次数

标签 统计

dynamic-pivot ×1

pivot ×1

sql-server-2005 ×1