SQL Server 2008 Pivot不知道值

时间:2011-04-06 19:21:28

标签: sql-server sql-server-2008 pivot

在SQL server 2008中,我有下表。

enter image description here

我不知道如何使用Pivot而不给予([val1],[val2],[val2],..)的价值。

非常感谢任何这方面的人。

感谢。

create table [VJ1].[dbo].[pivot] (class varchar(25) null, name varchar(25) null)

insert into [VJ1].[dbo].[pivot] (class,name) 
values ('class1','Peter'),
       ('class1','John'),
       ('class1','Marry'),
       ('class1','Ana'),
       ('class1','Julie'),
       ('class1','Lydia'),           
       ('class2','Ryan'),
       ('class2','Aaron'),           
       ('class2','Jacques'),
       ('class2','Jaanu'),           
       ('class3','Nita'),
       ('class3','Nina'),
       ('class3','Lili'),           
       ('class3','Rose'),
       ('class3','Jack'),
       ('class3','Tom')

1 个答案:

答案 0 :(得分:1)

您不需要知道这些值,只需要知道与类关联的名称的最大数量。

;WITH PvtCte as
(
select  Class,Name,RANK() over (partition by Class order by Name) r
from    [pivot]
)
SELECT class,[1],[2],[3],[4],[5],[6]
FROM 
(SELECT Class,Name,r
FROM PvtCte) p
PIVOT
(
MIN(Name)
FOR r IN
( [1], [2], [3], [4], [5],[6] )
) AS pvt

如果您不知道与课程相关联的姓名的最大数量,您可以尝试在dinamicaly之上构建相同的查询。希望它有所帮助!