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