2012-01-18 16 views
50

Vorrei ottenere la somma di colonna1, somma di colonna2 e somma totale. In Postgres posso fare in questo modo: (notare la stella)Selezionare * dalla sottoquery

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

Ma in Oracle ottengo un errore di sintassi e devono usare questo:

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

ho davvero molta colonne per tornare quindi non voglio scrivere nuovamente i nomi delle colonne nella query principale. C'è una soluzione facile?

Non riesco a utilizzare a + b nella query interna perché non sono noti in questo posto. Non voglio usare SELECT SELECT SUM(column1) AS a, SUM(column2) AS b, SUM(column1)+SUM(column2) AS total_sum.

+1

'SUM SELECT (col1) come, SUM (col2) AS b, SUM (col1) + SUM (col2) AS total_sum FROM table'? – MatBailie

risposta

107

È possibile selezionare tutte le colonne da quella sub-query aliasing e aggiungendo l'alias prima della *:

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