2013-10-30 50 views
-1

我想將這兩個SQL查詢合併爲一個。合併兩個SQL查詢,其中一個涉及GROUP BY?

SELECT COUNT() as total_grants, SUM("CURRENT_AWARD") as total_spent FROM t; 
SELECT YEAR, COUNT(), SUM('CURRENT_AWARD') FROM t GROUP BY YEAR AS by_year; 

第一個查詢顯示授予總數和總花費。第二個是一樣的,但是是一年。

這可能嗎?我已經在第一個查詢中將兩個查詢合併爲一個,但我無法弄清楚如何在第二個查詢中正確使用AS子句。

感謝您的任何幫助。

+2

1查詢有2列,其他3.你認爲什麼? –

+0

你可以發佈樣本數據和期望的輸出 – SriniV

回答

1

如何使用CROSS JOIN

SELECT YEAR, 
     COUNT(*), 
     SUM('CURRENT_AWARD') , 
     t2.total_grants, 
     t2.total_spent 
FROM t 
     CROSS JOIN 
     (
      SELECT COUNT(*) as total_grants, 
        SUM("CURRENT_AWARD") as total_spent 
      FROM t 
     ) t2 
GROUP BY YEAR; 
0

也許這樣的事情?

SELECT BY_YEAR, COUNT(), SUM('CURRENT_AWARD') FROM t GROUP BY rollup(by_year); 

(我覺得彙總可以RDBMS /版本依賴...)

0

試試這個。

SELECT YEAR, COUNT(*) as total_grants, SUM(CURRENT_AWARD) as total_spent 
FROM t 
GROUP BY YEAR; 

COUNT(*)將計算表t中的所有行,包括那些與NULL。如果您想忽略使用NULL的行,請計算特定列。例如,COUNT(CURRENT_AWARD)

由於此標識符只包含字母和下劃線,因此您不需要CURRENT_AWARD附近的引號。