Utilisez le “résultat de l'expression” à partir de CAS de l'expression dans la clause where
Est-il possible de filtrer les enregistrements dans SQL Server en utilisant un résultat de l'expression (weight_class) à partir d'un CASE
expression dans le WHERE
clause? Je ne peux pas le faire fonctionner parce que j'ai une erreur disant:
Nom de colonne non valide 'weight_class'
Code:
SELECT
first_name, last_name,
weight_class = CASE
WHEN weight < 172 THEN 'Welterweight'
WHEN weight <= 192 THEN 'Middleweight'
WHEN weight <= 214 THEN 'Light heavyweight'
WHEN weight <= 220 THEN 'Cruiserweight'
ELSE 'Heavyweight'
END
FROM
athletes
C'est de cette façon que je veux faire:
SELECT
first_name, last_name,
weight_class = CASE
WHEN weight < 172 THEN 'Welterweight'
WHEN weight <= 192 THEN 'Middleweight'
WHEN weight <= 214 THEN 'Light heavyweight'
WHEN weight <= 220 THEN 'Cruiserweight'
ELSE 'Heavyweight'
END
FROM
athletes
WHERE
weight_class = 'Cruiserweight'
OriginalL'auteur Jonas | 2010-12-30
Vous devez vous connecter pour publier un commentaire.
SQL-Server nécessite un alias de la table:
OriginalL'auteur bernd_k
OriginalL'auteur Michael Pakhantsov
Je pense que vous aurez à utiliser
HAVING
au lieu deWHERE
:EDIT:
Par le chemin, pourquoi ne pas simplement utiliser:
having
clause SQL Server. +1 Pour la deuxième requête mais qui risque d'être plus efficace car il permet une plage d'index de recherche plutôt que d'une analyse complète.OriginalL'auteur Spiny Norman