Dans une instruction SELECT utilisant une condition basée sur une valeur calculée, est-il possible d'inclure cette valeur calculée sans calculer la valeur calculée deux fois – une fois dans la sélection et à nouveau dans la condition?
J'utilise SQL Server 2000.
Vous pouvez tout mettre dans une sous-requête et choisir parmi
SELECT * FROM ( SELECT COL1 + COL2 as CalcColumn FROM Table ) q WHERE 100 < CalcColumn
mais en ce qui concerne les performances, je m'attends à ce que ce soit plus lent que votre requête d'origine.
Il ne devrait pas y avoir de perte de performance significative si vous utilisez la requête telle que vous l'avez écrite. SQL le gère pour vous, je crois. Ma question serait, pourquoi utilisez-vous un logiciel du siècle précédent?
Je viens d'essayer
SELECT Debit, Credit, Debit+Credit AS CalcColumn FROM JDT1 WHERE CalcColumn > 100
sur SQL 2005 comme suggéré par un couple de gars et l'erreur est: Msg 207, niveau 16, état 1, ligne 1 Nom de colonne non valide 'CalcColumn'.
SELECT COL1+COL2 as CalcColumn,* FROM TABLE WITH (NOLOCK) WHERE 100 < CalcColumn
J'espère que cela pourra aider.
Je crée généralement une vue pour avoir également des colonnes de calcul réutilisables.
CREATE VIEW TableView AS SELECT COL1+COL2 as CalcColumn,* FROM TABLE WITH (NOLOCK) GO SELECT * FROM TableView WHERE 100 < CalcColumn