计算在查询中声明的两个临时列名称的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不支持重复的列名吗?

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

最佳答案

您不能直接做到这一点-您需要使用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标准)中也有效。

08-25 09:46
查看更多