如何在没有group by的情况下对sql中的两列进行求和

时间:2016-03-01 18:49:32

标签: sql sql-server

我在表格中列有诸如pagecount,convertedpages和changedpages以及许多其他列。

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

我需要选择所有行以及pagecount,我不能将它们分组。我想知道是否有办法做到这一点?

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

谢谢。

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

如果我正确理解您的问题,虽然我不确定您为什么不能使用group by,但另一个选择是使用correlated subquery:< / p>

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

答案 2 :(得分:0)

不是100%在此之后您所做的事情,但如果您想在没有分组的情况下跨行,则可以在SQL Server中使用OVER()聚合:

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

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

相关问题