Sql server T-SQL查询,可以汇总当前月份的费用,即所有月份的合计平均值
我有一张有月票、月票、费用单的桌子 我需要一份报告,显示当前月份的总和,以及该月的平均值 这就是我目前得到的Sql server T-SQL查询,可以汇总当前月份的费用,即所有月份的合计平均值,sql-server,tsql,aggregate-functions,average,Sql Server,Tsql,Aggregate Functions,Average,我有一张有月票、月票、费用单的桌子 我需要一份报告,显示当前月份的总和,以及该月的平均值 这就是我目前得到的 SELECT dt.Date, dt.Other_Revenue, dt.Month_Id, dt.Date_Year FROM S1_Rpt_Daily_Totals WHERE (dt.Month_Id = MONTH(GETDATE())) 逻辑-将2012年、2011年、2010年等9月的费用加起来,除以年数得到我的平均数 但是在SQL查询中如
SELECT dt.Date, dt.Other_Revenue, dt.Month_Id, dt.Date_Year
FROM S1_Rpt_Daily_Totals
WHERE (dt.Month_Id = MONTH(GETDATE()))
逻辑-将2012年、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
此解决方案仅使用日期,因此如果它有效,您可能会删除月份id和日期年份。您的表def与查询不匹配。更正表-月份id、日期VARCHAR、收入MONEY。日期谢谢你指出。你的表格里只有一年的数据吗?如果没有,您需要将年份添加到使用clauseYear作为获取数据方法的年份中。我不认为一定是约会。但是我愿意接受建议。嗨,贝丝,有5年的数据。所以我需要总结我的九月数,然后除以年数,这可以用Sql中的某种变量来表示吗?好的,我试过了。没有得到结果。我将公布表格的定义。谢谢你的努力。例如:我需要知道我这个月的平均费用是多少,把过去的9月加起来,除以年数。如果你已经知道了日期,你为什么需要月号和日期?谢谢你,约翰。我想这可能行。至少从逻辑上来说,这是我一直在寻找的。这个留言板棒极了。更新成功了,这正是我想要的。明亮的