如何从分组依据中排除一般标准值

How to exclude general criteria value from group by

我有两个表:

One for employees data Employee

Another for employee vacations balance VacBal

现在我想获取每个员工的当前假期余额,考虑到如果 emp_num = 0 那么它是所有员工的 general balance 而不是特定员工的


If Employee table Sample data like that :

emp_num   name
  546     john
  134     Ramy

VacBal like that

emp_num  bal_num  bal_date
  546      1       5-5-2015
  546      2       6-5-2015
  134      1       7-5-2015
  0        3       2-2-2015
  0        4       6-1-2015

我想要这样的结果集:

emp_num  name  SUM(bal_num)
546      john    10             --->3+7
134      Ramy     8             --->1+7

如何做到这一点?

您可以使用相关子查询 SUM:

select e.emp_num, e.name, (select sum(vb.bal_num) from VacBal vb
                           where vb.emp_num in (e.emp_num,0))
from Employee e
SELECT e.emp_num, 
       name, 
       Sum(bal_num) + (SELECT Sum(bal_num) 
                       FROM   vacbal vb 
                       WHERE  emp_num = 0) 
FROM   employee e
          inner join vacbal v on e.emp_num=v.emp_num
GROUP  BY e.emp_num, 
          name