有没有办法在SQL中创建按年龄和主键排序的PIVOT表

时间:2016-06-16 16:42:30

标签: sql sql-server pivot-table

我试图在SQL Server 2008中创建一个数据透视表并遇到这个问题。 如图所示,我有两个人具有特定的主键。 他们获得了A,B,C,D等级。但是,他们的成绩不同,而且天数代表他们获得这些成绩的天数。因此,我正在尝试创建一个数据透视表,如图像中的第二个表,其中等级按升序排序。是否有可能实现这一目标?

This is the image.

1 个答案:

答案 0 :(得分:0)

如果您知道潜在列的数量,可以使用pivotconditional aggregation - 您只需建立一个row_number来转动:

select id_pk, 
  max(case when rn = 1 then code end) code1,
  max(case when rn = 2 then code end) code2,
  max(case when rn = 3 then code end) code3,
  max(case when rn = 4 then code end) code4,
  max(case when rn = 5 then code end) code5
from (
    select *, row_number() over (partition by id_pk order by days) rn
    from yourtable
  ) t
group by id_pk

如果您不知道潜在列的数量,则需要使用dynamic sql。这是一个很好的例子:https://stackoverflow.com/a/10404455/1073631