2010-10-14 34 views
12

要计算在查询声明了两个临时列名的总和() - 在SQL要计算总和()两个别名命名的列 - 在SQL

stud表只有两列m1,m2。总数和总数1作为临时名称给出。

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

如何计算grandtotalsum(total)+sum(total1)与声明的临时名称为查询执行的列名。

随着CTE不到风度支持重复的列名?

如何利用它来支持重复列名

+0

如果您发布的代码或XML,** **请在高亮文本编辑器的线和编辑器工具栏上的“代码”按钮(101 010)点击很好的格式和语法高亮显示! – 2010-10-14 10:32:58

回答

18

你不能直接这样做 - 你需要使用类似的CTE(公共表表达式) - 这样的:

;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 

这适用于SQL Server 2005及更新版本(以及其他一些支持CTE的数据库系统 - 这是ANSI标准)。

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

在该第一和第二场是数据类型为nvarchar,如果字段在integer然后

select first+second as total from test1 , test1 

是表名。