2016-07-15 103 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