2012-03-19 31 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

(重複)它被稱爲動態數據透視表。看一看。 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 – 2012-03-19 19:26:01

回答

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來做到這一點。 – 2012-03-19 20:06:11

+0

你可以嘗試使用動態的sql數據透視表。 – Taryn 2012-03-19 20:10:26