一个结果来自2行相同的表

时间:2015-12-21 16:09:10

标签: sql sql-server select

我有下表

ID | Person | Type | Function
-----------------------------
1  | John   | 1    | 1
2  | Smith  | 1    | 2

我想进行查询以从两行获取单个结果。第一列是Person as ProjectLead where function = 1 and type = 1,第二列是Person as Stakeholder where function = 2 and type = 1

ProjectLead | Stakeholder
-----------------------------
John        | Smith

有人有任何建议吗?

2 个答案:

答案 0 :(得分:1)

您可以在type上使用自我加入:

SELECT projectlead, stakeholder
FROM   (SELECT person AS projectlead, type
        FROM   mytable
        WHERE  function = 1) p
JOIN   (SELECT person AS stakeholder, type
        FROM   mytable
        WHERE  function = 2) s ON p.type = s.type

答案 1 :(得分:0)

桌上的SelfJoin

SELECT  ProjectLead = ProjectLead.Person,
        Stakeholder = StakeHolder.Person
FROM [YourTableName] AS ProjectLead
LEFT JOIN [YourTableName] AS StakeHolder ON StakeHolder [Function] = 2 AND StakeHolder.[TYPE] = 1
WHERE ProjectLead.[Function] = 1 AND ProjectLead.[TYPE] = 1