繁体   English   中英

如何在没有分组依据的情况下对SQL中的两列求和

[英]How to sum two columns in sql without group by

我在表格中还有许多列,例如页数,转换页和更改页。

pagecount是已转换页面和已更改页面的总和。

我需要选择所有页面行数以及我不能将它们分组。 我想知道是否有任何办法可以做到?

此选择是视图的一部分。 所以我可以使用另一个sql语句仅带总和,然后以某种方式使其成为主要sql查询的一部分吗?

谢谢。

SELECT
   *,
   (ConvertedPages + ChangedPages) as PageCount
FROM Table

如果我正确理解了您的问题,但不确定为什么不能使用group by ,另一种选择是使用correlated subquery

select distinct id, 
       (select sum(field) from yourtable y2 where y.id = y2.id) summedresult
from yourtable y

假设您具有以下数据:

id  |  field
1   |  10
1   |  15
2   |  10

相当于:

select id, sum(field)
from yourtable
group by id

不是您要执行的操作的100%,但是如果您希望跨行总计而不进行分组,则可以将OVER()与SQL Server中的聚合一起使用:

SELECT *, SUM(convertedpages) OVER() AS convertedpages
     , SUM(changedpages) OVER() AS changedpages
     , SUM(changedpages + convertedpages) OVER() as PageCount
FROM Table

这将重复每一行的总计,如果您希望在某些字段中对聚合进行分组,同时仍显示所有行的详细信息,则可以在OVER()使用PARTITION BY

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM