[英]T-SQL query that can sum up expenses for the current month, what that sumed average is for all months
我有一个带有Month_Id(int), Year(nvarchar), Expenses(money)
。
我需要一个报告来显示当前月份的总和,以及该月份的平均值。
这就是我到目前为止所得到的。
SELECT dt.Date, dt.Other_Revenue, dt.Month_Id, dt.Date_Year
FROM S1_Rpt_Daily_Totals
WHERE (dt.Month_Id = MONTH(GETDATE()))
逻辑-将2012年9月,2011年和2010年9月的支出总和除以年数,得出我的平均值。
但是如何在SQL查询中执行此操作。 可能吗?
免责声明-我在SQL领域还很陌生。
SELECT MONTH(Date), sum(Expenses), avg(Expenses)
FROM S1_Rpt_Daily_Totals
GROUP BY MONTH(Date);
但是我不确定您的表的定义是什么-我只是从给定的SQL中猜到的。
假设您正在使用SQL Server 2005+,则应该可以使用以下命令:
;with a(sumexpenses, [month])
as
(
select SUM(Expenses)
,DATEADD(month, datediff(month,0,[Date]), 0)
from S1_Rpt_Daily_Totals
group by
DATEADD(month, datediff(month,0,[Date]), 0)
)
select a1.[month]
,a1.sumexpenses
,AVG(a2.sumexpenses) as average
from a a1
join a a2
on MONTH(a1.[month]) = MONTH(a2.[month])
group by
a1.[month]
,a1.sumexpenses
该解决方案仅使用日期,因此如果可行,您可能会摆脱month_id和date_year。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.