要计算sum()两个名为column的别名 - 在sql中

时间:2010-10-14 10:28:13

标签: sql sum alias

计算在查询中声明的两个临时列名的sum() - 在SQL

stud表只有两列m1,m2。 total和total1以临时名称的形式给出。

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

如何将grandtotal计算为sum(total)+sum(total1),并将列名称声明为要执行的查询的临时名称。

cte dos不支持重复的列名?

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

2 个答案:

答案 0 :(得分:20)

你不能直接这样做 - 你需要使用像CTE(Common Table Expression)这样的东西 - 像这样:

;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 :(得分:-2)

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

在第一个和第二个是字段数据类型是nvarchar,如果字段在integer,那么

select first+second as total from test1 , test1

是表名。