在SQL server 2008中,我有下表。
我不知道如何使用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')
答案 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之上构建相同的查询。希望它有所帮助!