sql - 为什么存储过程为每个组返回错误的总和?
问题描述
我有这个查询,但SUM(SUM(inv.ServicePrice)) over () as TotalRevenueAllServices
返回错误的总和。我实际上想得到我为每个组所做的所有总和,但它返回错误的值。
Select top(3) s.ServiceName, Count(inv.fk_ServiceID) as TotalServicesCount, Sum(inv.ServicePrice) TotalServicesRevenue,
SUM(SUM(inv.ServicePrice)) over () as TotalRevenueAllServices
from Invoices inv
inner join Services s
on s.ServiceID= inv.fk_ServiceID
group by inv.fk_ServiceID, s.ServiceName
Order By ServiceName asc
解决方案
declare @FromDate date= '22/Nov/2017',
@ToDate date= '24/Nov/2018'
Set @ToDate= ISNULL(@ToDate, getdate());
with MainTable
as
(
Select top(3) s.ServiceName, Count(inv.fk_ServiceID) as TotalServicesCount, Sum(inv.ServicePrice) TotalServicesRevenue
from Invoices inv
inner join Services s
on s.ServiceID= inv.fk_ServiceID
--where CAST(inv.EntryDateTime as DATE) between @FromDate and @ToDate
group by inv.fk_ServiceID, s.ServiceName
Order By ServiceName asc
)
select * , (select sum(totalservicesrevenue) from MainTable) 'AllServicesRevenue'
, (select sum(TotalServicesCount) from MainTable) 'OverallServices'
from MainTable
推荐阅读
- python - Python 服务在带睡眠的 while 循环中使用 100% 的 CPU(在 docker 容器内)
- python - 无法确定此 HTML 的 BeautifulSoup 命令
- python - 如何保存在 django 中引用自身的模型实例?
- sql - 将 Varchar Apr-14-2015 转换为 04/14/2015 IN SQL
- cmd - 如何在 CMD 中运行用 Notepad++ 编写的 HLA 代码?
- google-cloud-platform - 有没有办法查询 Google Secrets Manager?
- json - 将域转换为 JSON 时缺少版本属性
- rust - Rust 柴油聚合查询
- i3 - 来自 i3wm 配置的源/导入文件
- r - yyyymmddHHMMSS 转换为 yyyy-mm-ss HH:MM:SS