L'utilisation d'une instruction de requête dans une requête semble fonctionner correctement tant que le seul cas auquel vous souhaitez correspondre est une string. Mais si vous voulez mettre ">" plus grand que (date ou nombre), etc, SSMS ajoute automatiquement des apostrophes autour de votre instruction (ci-dessous) comme s'il s'agissait d'une string.
Comment puis-je l'get pour accepter "plus grand que la date" ou "plus grand que le nombre", etc ??
Il existe deux types d' expression CASE :
- L'expression CASE simple compare une expression à un set d'expressions simples pour déterminer le résultat.
- L'expression CASE recherchée évalue un set d'expressions booleannes pour déterminer le résultat.
Vous voulez une expression CASE recherchée . Cela signifie que le WHEN devrait venir immédiatement après le mot key CASE.
CASE WHEN SoldDate <= SubjectDate THEN ...
Il existe deux types d'expressions CASE
(à partir de msdn ):
Un CASE
simple compare l'expression spécifiée pour EQUIVALENCY UNIQUEMENT
SELECT FieldName CASE WHEN 'Blah' THEN 'Foo' ELSE 'Bah' END
Un CASE
recherché peut aussi faire des inégalités mais a une syntaxe plus verbeuse:
SELECT CASE WHEN FieldName >= 'Blah' THEN 'Foo' ELSE 'Bah' END
Vous essayez d'utiliser la syntaxe Simple et devez utiliser la syntaxe de search en écrivant explicitement le nom du champ et la comparaison pour chaque évaluation.
Votre syntaxe d'instruction CASE
est incorrecte. WHEN
devrait venir directement après CASE
Ce:
CASE SoldDate WHEN ...
Devrait être ceci:
CASE WHEN SoldDate <= SubjectDate THEN SoldFor ELSE EstSalePrice END
Information additionnelle
Jetez un oeil à la documentation MSDN pour des exemples supplémentaires de syntaxe CASE
.