如何在同一SQL查询中使用计算列的值到另一个列中?

3

我正在编写一个查询,使用子查询来获取一些结果。

为了不每次重写子查询,我希望能够将列1的输出值作为输入传递给另一个列进行进一步计算。

要点1:我们可以使用任何变量来保存该值,并将其用于另一列中。

样例代码如下:

  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 ....
1个回答

3
很抱歉,我不能。以下是实现您想要的方式:
A.) 使用子查询
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.) 使用表达式本身

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 ....

John,感谢您的快速回复。由于我的查询有许多这样的情况,大约有20个或更多,我不想从代码可维护性的角度编写相同的代码。正在寻找一种替代且更好的方法。 - Arun Singh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接