我在表格中列有诸如pagecount,convertedpages和changedpages以及许多其他列。
pagecount是已转换页面和已更改页面的总和。
我需要选择所有行以及pagecount,我不能将它们分组。我想知道是否有办法做到这一点?
此选择是视图的一部分。所以我可以使用另一个sql语句只带来总和,然后以某种方式使它成为主sql查询的一部分?
谢谢。
答案 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()
行。