我试图在SQL Server 2008中创建一个数据透视表并遇到这个问题。 如图所示,我有两个人具有特定的主键。 他们获得了A,B,C,D等级。但是,他们的成绩不同,而且天数代表他们获得这些成绩的天数。因此,我正在尝试创建一个数据透视表,如图像中的第二个表,其中等级按升序排序。是否有可能实现这一目标?
答案 0 :(得分:0)
如果您知道潜在列的数量,可以使用pivot
或conditional 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