2012-01-18 3 views
50

Я хотел бы получить сумму столбца1, сумму столбца2 и общую сумму. В 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 
) 

У меня действительно много столбцов для возврата, поэтому я не хочу снова писать имена столбцов в основном запросе. Есть ли простое решение?

Я не могу использовать a + b во внутреннем запросе, потому что там неизвестно. Я не хочу использовать SELECT SELECT SUM(column1) AS a, SUM(column2) AS b, SUM(column1)+SUM(column2) AS total_sum.

+1

(col1), как, SUM (col2) AS B, SUM (col1) + SUM (col2) AS total_sum FROM table'? – MatBailie

ответ

107

Вы можете выбрать каждый столбец из этого подзапроса альясингом его и добавить псевдоним перед *: `SELECT SUM

SELECT t.*, a+b AS total_sum 
FROM 
(
    SELECT SUM(column1) AS a, SUM(column2) AS b 
    FROM table 
) t 
Смежные вопросы