寻找按月汇总的滚动总计

时间:2018-11-29 00:12:41

标签: sql sql-server ssms

我已经查看并找到了运行总计,但是没有任何东西可以将日期按年和月分组。我从下面的查询中获得的结果显示了按日期显示的滚动余额,并与每天的交易次数相加。

select 
    acct,
    year(trans_date) 'Year',
    month(trans_date) 'Month',
    sum(dom_amount) over (partition by acct order by year(trans_date), month(trans_date)) as TotalBalance
from ledger_mst
where acct = 1100
group by 
    dom_amount, 
    acct,
    year(trans_date),
    month(trans_date),
    trans_date
order by trans_date

截至目前,我应该有39行(每年2015年9月至2018年11月),每个月末都有滚动余额。目前,我的结果中有16,477行。看来我的分组依据已损坏,我不确定如何解决。

我的SQL技能充其量只是中等水平。放开我谢谢!

1 个答案:

答案 0 :(得分:0)

您不应该在dom_amount子句中包含trans_dategroup by,因为这将导致这些字段的每个不同值生成新的结果行... < / p>

因此,您需要更改order by子句。

只需从查询中删除它,它就可以正常工作。同时删除over子句。

select 
    acct,
    year(trans_date) 'Year',
    month(trans_date) 'Month',
    sum(dom_amount) TotalBalance
from ledger_mst
where acct = 1100
group by 
    acct,
    year(trans_date),
    month(trans_date)
order by
    year(trans_date),
    month(trans_date)