2012-03-19 3 views
0

У меня есть таблица следующимКак Опускайте заголовки столбцов в строках

ID FName LName 
    r1 Tom  Patrik 
    r2 Jerry Blaku 
    r1 Ethan Lie 

Я хотел бы что-то следующий

ID  r1  r2  r1 
    FName Tom  Jerry Ethan 
    LName Patrik Blaku Lie 

Обратите внимание, что значения в ID НЕ DISTINCT .... !! Можно ли достичь этого с помощью команды sql Server Pivot (или любой), Если да, я буду очень признателен за TSQL за это

+0

(duplicate) Это называется динамическим стержнем. Взглянуть. http://stackoverflow.com/questions/8327261/dynamic-sql-pivot-in-sql-server http://www.simple-talk.com/community/blogs/andras/archive/2007/09/14/37265 .aspx –

ответ

2

Я уверен, что есть лучшие способы сделать это. Но поскольку вы пытаетесь развернуть несколько столбцов, это уродливое решение:

create table #temp 
(
    id int, 
    fname varchar(50), 
    lname varchar(50) 
) 

insert into #temp values(1, 'Tom', 'Patrik') 
insert into #temp values(2, 'Jerry', 'Blaku') 

SELECT 'fname', P.Tom as '1', P.Jerry as '2' 
FROM 
(
    SELECT fname 
    FROM #temp 
) I 
PIVOT 
(
    min(fname) 
    FOR [fname] IN ([Tom], [Jerry]) 
) as P 
UNION 
SELECT 'lname', P.Patrik as '1', P.Blaku as '2' 
FROM 
(
    SELECT lname 
    FROM #temp 
) I 
PIVOT 
(
    min(lname) 
    FOR [lname] IN ([Patrik], [Blaku]) 
) as P 

drop table #temp 
+0

Спасибо за ваш ответ. У меня на самом деле очень сложный запрос, и я не могу написать опорную точку для каждой строки. Я упомянул очень простой стол, чтобы получить представление о том, как это сделать с помощью Pivot. –

+0

Вы можете попробовать использовать динамический sql pivot. – Taryn

Смежные вопросы