我有一个查询,我试图通过我手动创建的连接字段从另一个表中获取其他字段。问题是当我创建的字段为null时,我想使用另一个字段来加入。我不知道如何在不获得重复结果的情况下做到这一点。我尝试了UNION查询,但是当手动创建的字段值为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字段为NULL时,我需要进行不同的连接,以便填充其他字段。那次加入将是:
LEFT JOIN dbo.Mapping m (NOLOCK) ON m.CostCenter = a.CostCenter
如何在第二次加入中写入并且不会得到重复的结果?这是在不同字段上的单独连接,我认为它与进行条件连接的其他方法不同。如果是,有人可以解释如何在我的查询中实现该逻辑吗?
答案 0 :(得分:1)
我相信这就是你所追求的......
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)