2017-09-16 2 views
1

Il y a un champ 'gender' dans la table Member qui a 'm' ou 'f' comme valeurs. Je veux imprimer 'PASS' si à la fois 'm' et 'f' existent dans le domaine et PRINT 'échec' si:Le résultat est IN ('m', 'f') THEN PRINT (tsql)

  1. une seule des deux valeurs (m ou f) existe

ou 2. une valeur autre que m ou f existe

ou 3. un enregistrement nul existe.

Lorsque j'exécute le code suivant, le message "La sous-requête a retourné plus de 1 valeur" s'affiche.

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

Merci d'avance!

Répondre

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

Brilliant! Merci!!!!!! – inincubus