1

我有一张桌子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 年等的费用总和除以年数得到我的平均值。

但是我如何在 SQL 查询中做到这一点。可能吗?

免责声明 - 我对 SQL 很陌生。

4

2 回答 2

0
SELECT MONTH(Date), sum(Expenses), avg(Expenses)
FROM S1_Rpt_Daily_Totals
GROUP BY MONTH(Date);

但我不确定你的表的定义是什么——我只是从给定的 SQL 中猜测的。

于 2012-09-06T13:36:52.593 回答
0

假设您使用的是 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。

于 2012-09-06T14:20:47.630 回答