2012-01-18 19 views
50

Me gustaría obtener la suma de column1, suma de column2 y suma total. En Postgres puedo hacerlo de esta manera: (nótese la estrella)Seleccionar * de la subconsulta

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

Pero en Oracle Puedo obtener un error de sintaxis y tienen que utilizar esto:

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

tengo realmente muchas columnas para volver, así que no quiero volver a escribir los nombres de las columnas en la consulta principal. ¿Hay alguna solución fácil?

No puedo usar a + b en la consulta interna porque no se conocen en este lugar. No quiero usar SELECT SELECT SUM(column1) AS a, SUM(column2) AS b, SUM(column1)+SUM(column2) AS total_sum.

+1

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

Respuesta

107

Puede seleccionar todas las columnas de ese sub-consulta por aliasing y añadiendo el alias antes de la *: `SELECT SUM

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