Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment puis-je éviter de répéter plusieurs fois une expression calculée dans la même sélection ?

Vous pouvez utiliser la candidature croisée

SELECT T2.[ADD],
       T2.[ADD]*2,
       T2.[ADD]/2
FROM @T AS T1
  CROSS APPLY (SELECT T1.NUM1+T1.NUM2) AS T2([ADD])

ou un CTE

WITH C AS
(
  SELECT NUM1+NUM2 AS [ADD]
  FROM @T
)
SELECT [ADD],
       [ADD]*2,
       [ADD]/2
FROM C

ou une sous-requête (également appelée table dérivée)

SELECT T.[ADD],
       T.[ADD]*2,
       T.[ADD]/2
FROM (
       SELECT NUM1+NUM2 AS [ADD]
       FROM @T
     ) AS T

Il n'est pas possible d'utiliser l'alias de colonne dans la même liste de champs que celle déclarée.