2016-07-15 150 views
-2

這裏是我現有的表:轉換行到列列排在SQL Server

id |user-LastName |user-FirstName |manager-lasename |manager-firstname 
22 Gould    Todd    raj     kumar 
23 Volk    Michael   anil    tej 
24 Sarosiek   Kristi   mahesh    banda 

我需要得到以下結果:

id name    user   manager  
22 last name   gould   raj  
22 first name   todd   kumar  
23 last name   Volk   anil  
23 first name   Michael  tej  
24 last name   Sarosiek  mahesh  
24 first name   Kristi   banda  

我使用PIVOT嘗試過,但我無法讓它工作。有沒有人有辦法解決嗎?

+0

你的表似乎有一些潛在的正常化問題。你不應該把經理的信息放在另一張桌子上嗎?不確定表格是什麼,但很可能用戶數據也應該放在單獨的表格中。 –

回答

1

儘管設計在這裏我想這是你的問題的癥結所在,你可以用UNION很容易地獲取數據。

select id 
    , 'LastName' as name 
    , userLastName 
    , ManagerLastName 
from SomeTable 

union all 

select id 
    , 'FirstName' as name 
    , userFirstName 
    , ManagerfirstName 
from SomeTable 

order by id 
    , name desc 
0

嗨,你並不是真的試圖在這裏轉軸,而只是以一種不同的方式定位你的現有數據。

一到獲得您想要的結果的方法是創建兩個查詢和工會:

select id, 'FirstName' as name, user_firstName as "user" , manager_firstname as manager from p 
union 
select id, 'LastName' as name, user_LastName as "user" , manager_lastname as manager from p; 

Here is a functional example