从子查询中选择*

时间:2012-01-18 14:19:43

标签: sql oracle

我想获得column1的总和,column2的总和和总和。在Postgres中我可以这样做:(注意明星)

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

但是在Oracle中我遇到语法错误并且必须使用它:

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

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

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

1 个答案:

答案 0 :(得分:126)

您可以通过对其进行别名并在*之前添加别名来选择该子查询中的每一列:

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