如何避免重复行

时间:2018-06-23 11:51:00

标签: sql

我有两个表a和b

  • 一个(empid,name,dep)
  • b(b_id,empid,dep_move,month)

一个值

empid   name    dep
——————————
  1           John      tech
  2          Sam       Sec
  3          Jack      Dep1

b值

b_id     empid      dep_move    Month
—————————————————
 1         3           Dep2       6
 2         1           Ff         6
 3         1           Dd         7

第8个月的结果

empid   name    dep
——————————
  1           John      Ff
  1.          John       Dd
  2          Sam       Sec
  3          Jack      Dep2

当在左联接的子查询中使用max并要求第6个月时,我得到a.dep

此示例为我的鳕鱼

Select empid,name,case when b.month<='7' then b.dep_move Else a.dep end as depart
from a Left join
     b
     on a.empid = b.empid
Group by empid,name,dep,dep_move
Order by empid,name,dep,dep_move

谢谢大家

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么您需要某个月的值。我将在b表上显示如何执行此操作。您可以加入任何您需要的其他东西:

select b.*
from b
where b.month = (select max(b2.month)
                 from b b2
                 where b2.empid = b.empid and
                       b2.month <= 6
                );

您将获得empid的每一行,该行自特定月份开始有效。