2012-07-18 63 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