2012-01-18 13 views
50

Chciałbym uzyskać sumę kolumn1, sumy kolumn2 i łącznej sumy. W PostgreSQL mogę zrobić to w ten sposób: (Zawiadomienie gwiazdę)Wybierz * z podkwerendy

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

Ale w Oracle pojawia się błąd składni i trzeba to wykorzystać:

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

mam naprawdę dużo kolumn zwrócić, więc nie chcę ponownie wpisywać nazw kolumn w głównym zapytaniu. Czy istnieje jakieś łatwe rozwiązanie?

Nie mogę użyć a + b w zapytaniu wewnętrznym, ponieważ nie ma w tym miejscu miejsca. Nie chcę używać SELECT SELECT SUM(column1) AS a, SUM(column2) AS b, SUM(column1)+SUM(column2) AS total_sum.

+1

'SELECT SUM (col1) jako, SUM (col2) jako B, SUM (col1) + SUMA (col2) AS total_sum FROM table'? – MatBailie

Odpowiedz

107

Można wybrać każdą kolumnę z tego sub-zapytania przez aliasing go i dodając alias przed *:

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