一个员工有>=1的记录数,至少有一条记录是B=2999-12-31,C=1,这样的员工才是正常的,
如果将那些不满足这个条件的员工找出来,
想了半天,不得其法,
8 个解决方案
#1
伪代码如下:
select count(员工号),员工号 where B=2999-12-31 and C=1 group by 员工号 having count(员工号)>=1
select count(员工号),员工号 where B=2999-12-31 and C=1 group by 员工号 having count(员工号)>=1
#2
哦 上面是正常员工 那就再not in 子查询一下
#3
select *
from 一个表 t
where not exist (select 1 from 一个表 where 员工号=t.员工号 and B=2999-12-31 and C=1)
from 一个表 t
where not exist (select 1 from 一个表 where 员工号=t.员工号 and B=2999-12-31 and C=1)
#4
谢谢,好像都是可以的,
就是有个问题,3楼的代码,子条件中select 1,是啥意思?
就是有个问题,3楼的代码,子条件中select 1,是啥意思?
#5
exists()中是返回一个布尔值的。。1代表为真
#6
取不满足条件的员工:
select a,b,c from tab where b != '2999-12-31' and c != '1'
不就行了。
select a,b,c from tab where b != '2999-12-31' and c != '1'
不就行了。
#7
谢谢,这样不行,
如果一个员工有两条记录,一条满足,一条不满足,那这段代码会将不满足条件的取出来,但是实际上这个员工是满足条件的,因为只要有一条或一条以上的记录满足条件,就可以认为这个员工是没有问题的,
#8
是我没整明白你想要的。
#1
伪代码如下:
select count(员工号),员工号 where B=2999-12-31 and C=1 group by 员工号 having count(员工号)>=1
select count(员工号),员工号 where B=2999-12-31 and C=1 group by 员工号 having count(员工号)>=1
#2
哦 上面是正常员工 那就再not in 子查询一下
#3
select *
from 一个表 t
where not exist (select 1 from 一个表 where 员工号=t.员工号 and B=2999-12-31 and C=1)
from 一个表 t
where not exist (select 1 from 一个表 where 员工号=t.员工号 and B=2999-12-31 and C=1)
#4
谢谢,好像都是可以的,
就是有个问题,3楼的代码,子条件中select 1,是啥意思?
就是有个问题,3楼的代码,子条件中select 1,是啥意思?
#5
exists()中是返回一个布尔值的。。1代表为真
#6
取不满足条件的员工:
select a,b,c from tab where b != '2999-12-31' and c != '1'
不就行了。
select a,b,c from tab where b != '2999-12-31' and c != '1'
不就行了。
#7
取不满足条件的员工:
select a,b,c from tab where b != '2999-12-31' and c != '1'
不就行了。
谢谢,这样不行,
如果一个员工有两条记录,一条满足,一条不满足,那这段代码会将不满足条件的取出来,但是实际上这个员工是满足条件的,因为只要有一条或一条以上的记录满足条件,就可以认为这个员工是没有问题的,
#8
取不满足条件的员工:
select a,b,c from tab where b != '2999-12-31' and c != '1'
不就行了。
谢谢,这样不行,
如果一个员工有两条记录,一条满足,一条不满足,那这段代码会将不满足条件的取出来,但是实际上这个员工是满足条件的,因为只要有一条或一条以上的记录满足条件,就可以认为这个员工是没有问题的,
是我没整明白你想要的。