Tsql T-SQL:根据查询中的特定条件在两个单独的字段上联接

Tsql T-SQL:根据查询中的特定条件在两个单独的字段上联接,tsql,join,sql-server-2012,Tsql,Join,Sql Server 2012,我有一个查询,其中我试图通过手动创建的联接字段从另一个表中获取其他字段。问题是当我创建的字段为空时,我想使用另一个字段加入。我不知道如何在没有重复结果的情况下做到这一点。我尝试了联合查询,但是当手动创建的字段值为null时,它只显示值为null的所有内容。以下是查询: SELECT BU = m.BU, BUFBA = m.BUFBA, a.CostCenter, Delegate = m.Delegate, a.DistrictLookup, P

我有一个查询,其中我试图通过手动创建的联接字段从另一个表中获取其他字段。问题是当我创建的字段为空时,我想使用另一个字段加入。我不知道如何在没有重复结果的情况下做到这一点。我尝试了联合查询,但是当手动创建的字段值为null时,它只显示值为null的所有内容。以下是查询:

SELECT
    BU = m.BU,
    BUFBA = m.BUFBA,
    a.CostCenter,
    Delegate = m.Delegate,
    a.DistrictLookup,
    PCOwner = m.PCOwner,
    a.PGr,
    a.POrg,
    PrimaryContact = m.PrimaryContact,
    WarehouseManager = m.WarehouseManager,
    Zone = m.Zone,
    ZoneFBA = m.ZoneFBA
FROM
(SELECT
    e.CostCenter,
    e.District,
    DistrictLookup =
        CASE
            WHEN e.PGr IN ('N01','BQE','BQA') THEN 'GSS'
            WHEN e.PGr = 'BQB' THEN 'BG'
            WHEN e.PGr = 'BQF' THEN 'FP'
            ELSE e.District
            END,
    e.PGr,
    e.POrg
 FROM dbo.E1P e (NOLOCK)        
        WHERE
            e.CoCd = '4433'
    ) a

LEFT JOIN dbo.Mapping m (NOLOCK) ON m.District = a.DistrictLookup
当DistrictLookup字段为空时,我需要一个不同的连接,以便填充其他字段。这将是:

LEFT JOIN dbo.Mapping m (NOLOCK) ON m.CostCenter = a.CostCenter

如何在第二次连接中写入,而不获得重复的结果?这是不同字段上的单独联接,我认为它不同于其他执行条件联接的方法。如果是,有人能解释一下如何在我的查询中实现这个逻辑吗?

我相信这就是你想要的

LEFT JOIN dbo.Mapping m (NOLOCK) 
   ON (a.DistrictLookup IS NOT NULL AND m.District = a.DistrictLookup)
   OR (a.DistrictLookup IS NULL AND m.CostCenter = a.CostCenter)