2010-10-14 41 views
12

Para el cálculo de la suma() de dos nombres de columna temp declarados en la consulta SQL - enPara el cálculo de la suma() dos columnas con nombre de alias en SQL -

stud tabla tiene sólo dos columnas m1,m2. total y total1 se da como nombre temporal.

select 
    m1, m2, 
    SUM(m1) + SUM(m2) as Total, 
    SUM(m1) + SUM(m2) as Total1 
from 
    stud 
group by 
    m1, m2 

Cómo calcular grandtotal como sum(total)+sum(total1) con el nombre de columna declarada como nombre temporal para la consulta a ejecutar.

¿No es doblemente compatible con nombres de columnas duplicados?

Cómo hacer uso de ella para apoyar nombrecolumna duplicado

+0

Si publica código o XML, ** por favor ** resalte esas líneas en el editor de texto y haga clic en el botón "código" (101 010) en la barra de herramientas del editor para formatear y resaltar la sintaxis. –

Respuesta

18

No puede hacerlo directamente - es necesario utilizar algo así como un CTE (expresión de tabla común) - de esta manera:

;WITH sums AS 
(
    SELECT 
     m1, m2, 
     SUM(m1) + SUM(m2) as Total, 
     SUM(m1) + SUM(m2) as Total1 
    FROM 
     dbo.stud 
    GROUP BY 
     m1, m2 
) 
SELECT 
    m1, m2, 
    total, total1, 
    total+total1 AS 'GrandTotal' 
FROM 
    sums 

Esto funciona en SQL Server 2005 y posterior (y también en algunos otros sistemas de bases de datos que admiten CTE, que es un estándar ANSI).

-1
select convert(int, first)+ convert(int,second) as total from test1 

en este primer y el segundo es el tipo de datos de campo es nvarchar, y si los campos están en integer continuación

select first+second as total from test1 , test1 

es nombre de la tabla.

Cuestiones relacionadas