2010-10-14 63 views
12

Để tính sum() của hai tên cột tạm thời tuyên bố trong truy vấn - trong SQLĐể tính sum() hai bí danh tên cột - trong sql

stud bảng chỉ có hai cột m1,m2. tổng số và total1 được cho là tên temp.

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

Làm thế nào để tính toán grandtotal như sum(total)+sum(total1) với tên cột khai báo là tên tạm thời cho truy vấn để thực thi.

Với cte không hỗ trợ tên cột trùng lặp?

Làm thế nào để tận dụng nó để hỗ trợ trùng lặp columnname

+0

Nếu bạn đăng mã hoặc XML, ** vui lòng ** làm nổi bật các dòng đó trong trình soạn thảo văn bản và nhấp vào nút "mã" (101 010) trên thanh công cụ trình soạn thảo để định dạng và cú pháp tô sáng nó! –

Trả lời

18

Bạn không thể làm điều đó trực tiếp - bạn cần phải sử dụng một cái gì đó giống như một CTE (Common Table Expression) - như thế này:

;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 

Điều này làm việc trong SQL Server 2005 và mới hơn (và cũng trong một số hệ thống cơ sở dữ liệu khác hỗ trợ CTE's - đó là một tiêu chuẩn ANSI).

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

trong này đầu tiên và thứ hai là lĩnh vực datatype là nvarchar, và nếu các trường là trong integer sau đó

select first+second as total from test1 , test1 

là tên bảng.

Các vấn đề liên quan