SQL Server 2008 Pivot, не зная значений - PullRequest
2 голосов
/ 06 апреля 2011

В 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 Ответ

1 голос
/ 07 апреля 2011

Вам не нужно знать значения, только максимальное количество имен, связанных с классом.

;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

Если вы не знаете максимального количества имен, связанных с классом, вы можете попробовать создать тот же запрос, что и выше, динамически. Надеюсь, это поможет!

...