[英]SQL Server - Transposing Rows to Columns
We have a table in our MSSQL database, that store Office Person relation ship data.我们的 MSSQL 数据库中有一个表,用于存储 Office Person 关系数据。 The table structure is
表结构是
CREATE TABLE (
OfficeID UNIQUEIDENTIFIER
PersonID UNIQUEIDENTIFIER
Designation VARCHAR(20)
)
The table will have value该表将有价值
E1F5ECA9-7D5A-4580-AA7D-0003A582F286|E1F5ECA9-7D5A-3580-AA7D-0003A582F286|Manager
E1F5ECA9-7D5A-4580-AA7D-0003A582F286|E1F5ECA9-7D5A-3580-AA7D-0003A582F286|Engineer
E2F5ECA9-7D5A-4580-AA7D-0003A582F286|E2F5ECA9-7D5A-3580-AA7D-0003A582F286|Manager
E2F5ECA9-7D5A-4580-AA7D-0003A582F286|E2F5ECA9-7D5A-3580-AA7D-0003A582F286|Engineer
What I want to get is each office can have only one Manager and one Engineer.我想得到的是每个办公室只能有一名经理和一名工程师。 The output I am expecting is
我期待的输出是
OfficeID|Manager ID| Engineer ID|
E1F5ECA9-7D5A-4580-AA7D-0003A582F286|E1F5ECA9-7D5A-3580-AA7D-0003A582F286| E1F5ECA9-7D5A-3580-AA7D-0003A582F286
E2F5ECA9-7D5A-4580-AA7D-0003A582F286|E2F5ECA9-7D5A-3580-AA7D-0003A582F286|E2F5ECA9-7D5A-3580-AA7D-0003A582F286
How can i form the query for getting the data in this format?我如何形成查询以获取这种格式的数据?
Regards,问候,
John约翰
using conditional aggregation:使用条件聚合:
select
OfficeId
, ManagerId = max(case when Designation = 'Manager' then PersonId end)
, EngineerId = max(case when Designation = 'Engineer' then PersonId end)
from t
group by OfficeId
or using pivot()
:或使用
pivot()
:
select
OfficeId
, ManagerId = Manager
, EngineerId = Engineer
from t
pivot (max(PersonId) for Designation in ([Manager],[Engineer])) p
rextester demo: http://rextester.com/OTFBIS66929 reextester 演示: http ://rextester.com/OTFBIS66929
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.