Comment utiliser la valeur de colonne calculée pour une autre colonne dans la même requête SQL

J'écris une requête, qui utilise SubQuery pour get un résultat.

Au lieu de réécrire la sous-requête à chaque fois, je veux utiliser la même valeur de sortie de la colonne 1 que l'input d'une autre colonne pour le calcul ultérieur.

Point 1: Pouvons-nous utiliser n'importe quelle variable pour save la valeur et utiliser la même chose pour une autre colonne.

Exemple de code attendu:

SELECT COLUMN1 ,CASE WHEN (SELECT CancelDate FROM TABLE3 WHERE EXPR....) <> '' THEN 'Cancel' ELSE 'New' END AS **TransactionType** ,COLUMN2 ,CASE **TransactionType** WHEN 'Cancel' THEN EXPR 1.... CASE **TransactionType** WHEN 'New' THEN EXPR 2 .... END AS CALCOLUMN2 FROM TABLE1 JOIN TABLE2 .... 

Eh bien, tu ne peux pas. Il y a des moyens de réaliser ce que vous voulez:

A.) utilisant la sous-requête

 SELECT Column1, TransactionType, CASE TransactionType WHEN 'Cancel' THEN EXPR 1.... CASE TransactionType WHEN 'New' THEN EXPR 2 .... END AS CALCOLUMN2 FROM ( SELECT COLUMN1 ,CASE WHEN (SELECT CancelDate FROM TABLE3 WHERE EXPR....) <> '' THEN 'Cancel' ELSE 'New' END AS **TransactionType** FROM ..... ) ... 

B.) en utilisant l'expression elle-même

 SELECT COLUMN1 ,CASE WHEN (SELECT CancelDate FROM TABLE3 WHERE EXPR....) <> '' THEN 'Cancel' ELSE 'New' END AS TransactionType ,COLUMN2 ,CASE (CASE WHEN (SELECT CancelDate FROM TABLE3 WHERE EXPR....) <> '' THEN 'Cancel' ELSE 'New' END) WHEN 'Cancel' THEN EXPR 1.... CASE (CASE WHEN (SELECT CancelDate FROM TABLE3 WHERE EXPR....) <> '' THEN 'Cancel' ELSE 'New' END) WHEN 'New' THEN EXPR 2 .... END AS CALCOLUMN2 FROM TABLE1 JOIN TABLE2 ....