2013-10-30 52 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附近的引号。