计算在查询中声明的两个临时列名的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不支持重复的列名?
如何利用它来支持重复的列名
答案 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
是表名。