2012-07-18 61 views
1

我使用的查询,如:您是否可以使用使用公式中用于获得另一列的公式获得的列?

SELECT C1, C1+C2,C (C1+C2)*C3 FROM T1 WHERE C2='XX' 

现在,第二列的公式是C1 + C2和第三列是第二乘以C3。 所以,我想知道的是,如果这样的事情是可能的:

SELECT C1,C1+C2 AS NEWC, NEWC*C3 FROM T1 WHERE C2='XX' 

该查询似乎微不足道,但实际上我有一个巨大的4行查询我想用一个出路在哪如果有的话,由于重复之前列中已经提到的公式,查询会变得毫无意义地延长。

回答

5

您可以使用子查询来删除重复的代码:

SELECT C1, NEWC, NEWC*C3 
    FROM (SELECT C1, C1+C2 NEWC, C3 
      FROM T1 
     WHERE C2='XX') 

有时,可读性,可以提高子查询移动到WITH条款:

WITH intermediate_result AS (
    SELECT C1, C1+C2 NEWC, C3 
    FROM T1 
    WHERE C2='XX' 
) 
SELECT C1, NEWC, NEWC*C3 
    FROM intermediate_result 
+0

对不起迟到标记。你是一个拯救生命的人:) – 2012-07-31 11:50:36