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