具有多个条件的where子句

时间:2020-05-26 16:39:58

标签: sql sql-server

我想从“ OTHER_COMMUNIC_NUM”列中提取没有电话号码的唯一雇员。请记住,当您喜欢在“ OTHER_COMMUNIC_C”列时,它会显示数字1,7,8,分别代表手机以及家庭电话和办公电话。

我的查询提取(1,7,8)中的所有空值,但我想排除在此选择中具有电话号码的人:

select  PAT_ID
, LINE
, OTHER_COMMUNIC_C
, OTHER_COMMUNIC_NUM 
from OTHER_COMMUNCTN 
where OTHER_COMMUNIC_C in (1,7,8)  and OTHER_COMMUNIC_NUM  is null**

**表格

PAT_ID  LINE    OTHER_COMMUNIC_C    OTHER_COMMUNIC_NUM
Z10000  1         7                  957-407-5442
Z10000  2         8                  NULL
Z10000  3         1                  NULL
Z100000 1         7                  651-431-1879
Z100000 2         8                  651-431-1879
Z100000 3         1                  NULL
Z10000001         7                  856-625-6979
Z10000002         8                  NULL
Z10000003         1                  856-625-6979

1 个答案:

答案 0 :(得分:0)

我想你是说这个意思

select  PAT_ID
from OTHER_COMMUNCTN 
where OTHER_COMMUNIC_C in (1,7,8)  
group by PAT_ID
having count(OTHER_COMMUNIC_NUM) = 0

在所有类型,1、7或8记录中根本没有电话号码的地方,它会为您提供所有PAT_ID

如果您的意思是“给我所有PAT_ID,而其1、7或8条记录中的任何一条包含空值:

select  PAT_ID
from OTHER_COMMUNCTN 
where OTHER_COMMUNIC_C in (1,7,8)  
group by PAT_ID
having 
  count(OTHER_COMMUNIC_NUM) < 3 

您可能需要确保只检查具有1、7和8条记录的员工(即忽略仅具有1条和7条记录的员工),这可以通过将AND sum(case OTHER_COMMUNIC_C WHEN 1 THEN 1 WHEN 7 THEN 2 WHEN 8 THEN 4 END) = 7添加到您的生活