group by的结果不正确
我有一个表LHRA.LHRTZY12, 其中有两个字段,
DATFIN, FLPRCI,
对于每个员工,只能有一条记录的DATFIN=2999-12-31,FLPRCI=1,
我现在要找到那些没有一条记录是满足DATFIN=2999-12-31,FLPRCI=1的员工,
SELECT NUDOSS FROM LHRA.LHRTZY12
WHERE (DATFIN='2999-12-31' and FLPRCI='1')
GROUP BY NUDOSS
HAVING COUNT(*)=0
我看到明明有人是不满足条件的,为啥结果为空?
比如有的人只有一条记录,其DATFIN=2999-01-01,FLPRCI=1,这个员工应该会出现在结果中,
[解决办法]
你的WHERE (DATFIN='2999-12-31' and FLPRCI='1')只找出了满足DATFIN='2999-12-31' and FLPRCI='1'的记录,没有满足的记录则没有返回,当然就不会被后续group by,having处理了。
我想你可以或这样:
SELECT NUDOSS FROM LHRA.LHRTZY12
except
SELECT NUDOSS FROM LHRA.LHRTZY12 WHERE (DATFIN='2999-12-31' and FLPRCI='1')
方法多种多样。