2010-08-12 5 views
1

Je voudrais une requête SELECT pour retourner une valeur spécifique si le nombre d'un sous-requête imbriquée est 0 ...SQL Subqueries COUNT CASE

SELECT 
    (SELECT (CASE COUNT(*) = 0 THEN 'TRUE' ELSE 'FALSE' END) 
    FROM List 
    WHERE Status = 1 
     AND Deleted = 1 
) AS Status 

Cela ne fonctionne pas ce qui ne va pas avec cette syntaxe?

Répondre

8

Je crois que vous voulez une déclaration de cas qui ressemble à ceci:

CASE 
WHEN EXISTS(SELECT * FROM list WHERE Status = 1 AND Deleted = 1) THEN 'FALSE' 
ELSE 'TRUE' 
END 
1

Votre requête ne contient pas le mot-clé QUAND dans l'instruction CASE. Vous pouvez y aller avec ou vous pouvez simplifier la requête en supprimant l'instruction SELECT externe. Et, les parenthèses sont optionnelles aussi.

SELECT CASE WHEN COUNT(*) = 0 THEN 'TRUE' ELSE 'FALSE' END 
FROM List 
WHERE Status = 1 
    AND Deleted = 1