2012-01-18 178 views
50

我想获得column1的总和,column2的总和和总和。在Postgres的我能做到这样:(注意星)从子查询中选择*

SELECT *, a+b AS total_sum FROM 
(
    SELECT SUM(column1) AS a, SUM(column2) AS b 
    FROM table 
) 

但在甲骨文,我得到一个语法错误并有能力使用这样的:

SELECT a,b, a+b AS total_sum FROM 
(
    SELECT SUM(column1) AS a, SUM(column2) AS b 
    FROM table 
) 

我真的有很多的列返回,所以我不想在主查询中再次写列名。有没有简单的解决方案?

我不能在内部查询中使用a + b,因为这里没有已知的地方。 我不想使用SELECT SELECT SUM(column1) AS a, SUM(column2) AS b, SUM(column1)+SUM(column2) AS total_sum

+1

'SELECT SUM(COL1)为A,SUM(COL2)为B,SUM(COL1 )+ SUM(col2)AS total_sum FROM table'? – MatBailie 2012-01-18 14:43:45

回答

107

您可以通过别名它和*之前添加别名然后从子查询中的每个列:

SELECT t.*, a+b AS total_sum 
FROM 
(
    SELECT SUM(column1) AS a, SUM(column2) AS b 
    FROM table 
) t