如何从分组依据中排除一般标准值
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
我有两个表:
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