2010-10-14 14 views
12

Aby obliczyć sumę() dwóch nazw kolumn temp deklarowanych w zapytaniu - w SQLAby obliczyć sumę() dwie kolumny - alias o nazwie SQL

stud tabela ma tylko dwie kolumny m1,m2. total i total1 podane są jako nazwy tymczasowe.

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

Jak obliczyć grandtotal jak sum(total)+sum(total1) z nazwą kolumny zadeklarowanej jako nazwy temp dla zapytania do wykonania.

Z cte nie obsługuje duplikatów nazw kolumn?

Jak z niego skorzystać w celu wspierania powielać columnName

+0

Jeśli umieścisz kod lub XML, ** proszę ** podświetl te linie w edytorze tekstu i kliknij przycisk "kod" (101 010) na pasku narzędzi edytora, aby ładnie sformatować i podświetlić składnię! –

Odpowiedz

18

Nie można zrobić to bezpośrednio - trzeba użyć coś jak CTE (Common Expression tabeli) - tak:

;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 

Działa to w SQL Server 2005 i nowszych (a także w niektórych innych systemach baz danych obsługujących CTE - który jest standardem ANSI).

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

w tej pierwszej i drugiej jest pole typu danych jest nvarchar, a jeśli pola są w integer następnie

select first+second as total from test1 , test1 

jest nazwa tabeli.

Powiązane problemy