Désolé, si cette question a déjà été postée, mais je suis assez nouveau sur SQL Server et je ne trouve pas la réponse que je recherche. (Peut-être que je suis juste incapable de le verser correctement .. oh bien)
Donc, essaie de travailler avec une colonne qui vient d'être créée dans ma requête p>
comme un exemple très simple : P>
SELECT q.Account, q.Quantity, q.Price,
CASE
WHEN q.Account = '49661B' THEN (q.Quantity * q.Price)
END AS [USD Total Value],
[USD Total Value] * 1.34 as [CDN Value]
FROM Quote as q
4 Réponses :
Vous devez le faire sous la forme d'une sous-requête ceci devrait vous donner ce que vous avez besoin P> update strong> p> Au fur et à mesure que Uuerdo a dit p> alias d'expressions de sélection peut ne pas être référencé nulle part dans la requête (à ce niveau ... des alias dans les sélections d'une sous-requête peuvent être référencés dans la requête extérieure) p> < / p>
Ce n'est pas spécifiquement lié à une expression de cas. Pour être plus précis, des alias d'expressions sélectionnées peuvent ne pas être référencés nulle part dans la requête (à ce niveau ... des alias dans les sélections d'une sous-requête peuvent être référencés dans la requête extérieure).
SQL Server ne permet pas de renvoyer un alias au même niveau: Si vous n'aimez pas l'idée de tout emballer avec de l'extérieur, puis cross s'appliquer (latéral) est le moyen de aller. p> p>
Comme standin.wolf a mentionné sur Temps Tables, je peux vous montrer comment aller à propos de celui-ci
Utilisez votre requête d'origine et mettez-la dans une table Temp d'abord p>
select *, [USD Total Value] * 1.34 as [CDN Value] FROM #temp;
Un de mes favoris utiliserait le CTE. Le seul inconvénient qu'il ne peut pas être utilisé de manière récursive puis utilisez le CTE P> select *, [USD Total Value] * 1.34 as [CDN Value]
FROM CTE;