2017-09-16 41 views
1

Member表中有一个'gender'字段,其值为'm'或'f'。我想打印 'PASS' 如果两个 'm' 和 'F' 在现场和PRINT存在 'FAIL',如果:IF结果为IN('m','f')THEN PRINT(tsql)

  1. 只有两个值中的一个(米或f)存在

或2.除m或f以外的值存在

或3.空记录存在。

当我运行下面的代码,我得到“子查询返回多个值”消息。

IF ((SELECT DISTINCT Gender FROM dbo.Member) in ('M','F')) 
PRINT 'PASS' 
ELSE 
PRINT 'FAIL'` 

预先感谢您!

回答

2
IF EXISTS (SELECT * FROM (
     SELECT sum(case when gender= 'M' then 1 else 0 end) M, 
       sum(case when gender= 'F' then 1 else 0 end) F, 
       sum(case when gender not in('F', 'M') then 1 else 0 end) Other 
     FROM dbo.Member) a 
     WHERE a.M>0 and a.F>0 and a.Other=0)  
PRINT 'PASS' 
ELSE 
PRINT 'FAIL' 
+0

太棒了!谢谢!!!!!! – inincubus