SQL左连接条件

时间:2015-03-11 21:46:40

标签: mysql sql sql-server join

Hello Everyone and everyone,

我有一个问题,我希望使用条件使用左连接解决,但是,我还没弄清楚,我开始头疼。我希望使用左连接来提取数据但是我只想要包含两列,并且我希望条件基于第二个表中的第3列。此外,我对那些不一定需要左连接条件的解决方案持开放态度。

Select a.ID,
a.AssociateName,
a.FormTypeID
b.Segment1
b.Segment2
From NinjaTable a
Left Join ShinobiTable b On b.AssociateName = a.AssociateName

以下是我需要的条件(虽然我知道它不适用,但我会在if语句中说出来)这使得这个棘手的问题是关联可能有多于1个赋值状态。他们可能已经转移到另一个部门,他们之前的列表现在显示为无效,但他们仍然有另一个活动的。我需要条件基本上只有在适用的情况下才能获取Active,否则如果没有Active,则抓住非活动的

IF b.AssignmentStatus = 'Active' then perform left join Normally
IF b.AssignmentStatus = 'Inactive' Then only perform left join if there is not an active one.

1 个答案:

答案 0 :(得分:1)

您可以包含两个状态记录,然后将它们合并,例如:

Select a.ID,
a.AssociateName,
a.FormTypeID,
coalesce(b.Segment1, c.Segment1),
coalesce(b.Segment2, c.Segment2)
From NinjaTable a
Left Join ShinobiTable b On b.AssociateName = a.AssociateName and b.AssignmentStatus = 'Active'
Left Join ShinobiTable c On c.AssociateName = a.AssociateName and c.AssignmentStatus = 'Inactive'
相关问题