SELECT COL1 + COL2 comme CalcColumn, * FROM TABLE WITH (NOLOCK) O 100 100 <COL1 + COL2

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

Déclaration SQL

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