sql server转入行

时间:2014-05-15 08:30:02

标签: sql sql-server pivot

如何转动

ID         Allocate
552779  A - Level 2 Tier 1
552779  G - Level 2 Tier 2
552779  O -  4 Units

进入这个

               1           2            3
     

552779 | A - 2级1级| G - 2级第2层| O - 4个单位

  • 请记住,Allocate可以是一组86个可能的已知字符串中的任何字符串值吗?我是否需要使用除Pivot之外的其他技术来执行此操作 - 新记录上最多可包含6个字符串,因为这将是ID与不同字符串关联的最大次数
  • 这必须是动态的,有6个可能的列但是可能有ID号只有一个与之关联的字符串加上5个空值和另一个ID,其中最多有6个与之关联的字符串以及1中的各种其他组合 - 6。

1 个答案:

答案 0 :(得分:0)

WITH OrderedItems AS (
    SELECT ID
          ,Allocate
          ,ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Allocate) AS RowNumber
    FROM Table
)
SELECT Id
      ,MAX(CASE WHEN RowNumber = 1 THEN Allocate ELSE NULL END) AS [1]
      ,MAX(CASE WHEN RowNumber = 2 THEN Allocate ELSE NULL END) AS [2]
       ...
FROM OrderedItems
GROUP BY Id

如果需要,可以在最后一部分使用数据透视