2016-02-23 42 views
-1

我有以下查詢:Oracle SQL:如何將總列添加到結果集?

WITH 
    curr AS ( 
    SELECT COUNT(*) 
    FROM table1 
    WHERE column1 LIKE 'A%' 
    AND column2 = TRUNC(CURRENT_TIMESTAMP) 
), 
    hist AS (
    SELECT COUNT(*) 
    FROM table2 
    WHERE column1 LIKE 'A%' 
    AND column2 = TRUNC(CURRENT_TIMESTAMP) 
) 
SELECT (curr+hist) FROM dual; 

現在這個查詢不工作,因爲currhist是無效的標識符,但是我想這兩個結果結合成一個總並返回。這怎麼能做到?

+0

'UNION'這兩個選擇並計算結果列值的SUM。 CTE('WITH'子句)是不必要的。 –

回答

1

你需要參考你的SELECT中的兩個CTE。類似於

WITH 
    curr AS ( 
    SELECT COUNT(*) cnt 
    FROM table1 
    WHERE column1 LIKE 'A%' 
    AND column2 = TRUNC(CURRENT_TIMESTAMP) 
), 
    hist AS (
    SELECT COUNT(*) cnt 
    FROM table2 
    WHERE column1 LIKE 'A%' 
    AND column2 = TRUNC(CURRENT_TIMESTAMP) 
) 
SELECT curr.cnt + hist.cnt 
    FROM curr 
     CROSS JOIN hist 

會工作。那麼

WITH 
    curr AS ( 
    SELECT COUNT(*) cnt 
    FROM table1 
    WHERE column1 LIKE 'A%' 
    AND column2 = TRUNC(CURRENT_TIMESTAMP) 
), 
    hist AS (
    SELECT COUNT(*) cnt 
    FROM table2 
    WHERE column1 LIKE 'A%' 
    AND column2 = TRUNC(CURRENT_TIMESTAMP) 
) 
SELECT SUM(cnt) 
    FROM (SELECT curr.cnt FROM curr 
     UNION ALL 
     SELECT hist.cnt FROM hist) 
+0

這工作,謝謝! –