Sql 使用别名表选择同一列两次

Sql 使用别名表选择同一列两次,sql,database,ms-access,relational-database,Sql,Database,Ms Access,Relational Database,下面是我正在使用的表格示例。这些仅表示与我的查询相关的列 _要求 RequirementID fkOwningWsID ------------------------------------------- REQ-RPT-01 1 REQ-RPT-02 2 _工作流 pk WsNm ------------------------

下面是我正在使用的表格示例。这些仅表示与我的查询相关的列

_要求

    RequirementID             fkOwningWsID
    -------------------------------------------    
    REQ-RPT-01                1
    REQ-RPT-02                2
_工作流

    pk             WsNm
    -------------------------------------------    
    1               Workstream1
    2               Workstream2
MNU工作流程领导

    fkWsID          fkEeID
    -------------------------------------------    
    1               1
    1               2
    2               1
    2               2
下表是联合的结果。员工可以来自不同的公司,下面的工会列出了所有员工ID、来自公司1的员工ID(否则为0)和来自公司2的员工ID(否则为0)

qrytrackerleelist

    EeID             Company1_ID           Company2_ID
    -------------------------------------------    
    1                 1                     0
    2                 0                     2
我正在尝试查看以下结果

    RequirementID        WsNm          Company1_Lead      Company2_Lead
    --------------------------------------------------------------------   
    REQ-RPT-01           Workstream1    1                  2
    REQ-RPT-02           Workstream2    1                  2
我发布了以下SQL语句

 SELECT DISTINCT Req.RequirementID,  Ws.Wsnm, company1_id.ee_id, company2_id.ee_id
FROM (((([_Requirements] AS Req 
INNER JOIN [_Workstream] AS Ws ON Req.fkOwningWsID = Ws.pkWsID)
INNER JOIN [mnWorkstream_Leads] AS wsLeads ON Ws.pkWsID = wsLeads.fkWsID)
LEFT OUTER JOIN qryTrackerAllEeList AS company1 ON wsLeads.fkEeID = company1.Company1_ID)
LEFT OUTER JOIN qryTrackerAllEeList AS company2 ON wsLeads.fkEeID = company2.Company2_ID)
然而,问题是,我检索以下结果

    RequirementID        WsNm          Company1_Lead      Company2_Lead
    --------------------------------------------------------------------   
    REQ-RPT-01           Workstream1                       2
    REQ-RPT-01           Workstream1    1                  
    REQ-RPT-02           Workstream2                       2    
    REQ-RPT-02           Workstream2    1
关于如何消除这些重复行和空值的任何建议?

使用
MAX()
groupby
仅选择非空值并将其分组为一行:

SELECT DISTINCT Req.RequirementID,  Ws.Wsnm, 
MAX(company1_id.ee_id) as Company1_Lead, MAX(company2_id.ee_id) as Company2_Lead,
FROM (((([_Requirements] AS Req 
INNER JOIN [_Workstream] AS Ws ON Req.fkOwningWsID = Ws.pkWsID)
INNER JOIN [mnWorkstream_Leads] AS wsLeads ON Ws.pkWsID = wsLeads.fkWsID)
LEFT OUTER JOIN qryTrackerAllEeList AS company1 ON wsLeads.fkEeID = company1.Company1_ID)
LEFT OUTER JOIN qryTrackerAllEeList AS company2 ON wsLeads.fkEeID = company2.Company2_ID)
GROUP BY req.RequirementID, Ws.Wsnm