2013-07-28 22 views
1

我在SQL表斷絕2008年這樣轉換行分列具體情況在SQL Server

ID Name Have 
1 Book PageNumber  
2 Book Title 
3 Book Papers 
4 Car Wheels 
5 Car Doors 
6 Car Engine 
7 Car Windows 

我想改變列的順序和行這樣

Name A   B  C  D 
Book PageNumber Title Papers - 
Car Wheels  Doors Engine Windows 

是有可能編寫一個自動進行此更改的查詢? 我已經在Microsoft Access與交叉表,但在SQL中,我沒有任何想法。

問候,

+0

我覺得需要'行中Columns' (你的標題似乎是錯的) – Fabio

+0

我同意你和c糾正了這個問題。 –

回答

0

您可以通過使用PIVOT運營商達到預期的效果:

select name 
    , [1] as A 
    , [2] as B 
    , [3] as C 
    , [4] as D  
    from (select name 
       , have 
       , row_number() over(partition by name order by id) as rn 
      from t1 
     ) s 
pivot (
    max(have) for rn in ([1], [2],[3], [4]) 
) as pvt 

結果:

NAME A    B   C   D 
------------------------------------------------------------ 
Book PageNumber  Title  Papers (null) 
Car  Wheels   Doors  Engine Windows 

SQLFiddle Demo

+0

Hardcoding ....... – Fabio

+0

@nicholasKrasnov只是好奇...無論如何推廣這到可變數量的列沒有動態SQL? –

+0

@LuisLL不是我所知道的。 –