T-SQL月末总和

时间:2013-12-08 12:09:53

标签: tsql sql-server-2008-r2

我有一个包含一些事务字段的表,主要ID是一个CUSTomer字段和一个TXN_DATE,对于其中两个,NOM_AMOUNT和GRS_AMOUNT我需要一个EndOfMonth SUM(没有滚动,只有EOM,如果没有事务,则可以为0)月份)这两个金额字段。我该怎么做?我还需要一个0报告几个月没有交易.. 谢谢!

1 个答案:

答案 0 :(得分:2)

如果您group by表达month(txn_date),则可以计算sum。如果您在月份中使用带有连接的临时表,则可以确定哪些月份没有记录,因此报告为0(如果不使用coalesce功能,则为null)。

这将是您的最终结果,我假设您可以添加您需要的其他列,以适应您的架构。

select mnt as month 
, sum(coalesce(NOM_AMOUNT ,0)) as NOM_AMOUNT_EOM
, sum(coalesce(GRS_AMOUNT ,0)) as GRS_AMOUNT_EOM
from (
  select 1 as mnt
  union all select 2
  union all select 3
  union all select 4
  union all select 5
  union all select 6
  union all select 7
  union all select 8
  union all select 9
  union all select 10
  union all select 11
  union all select 12) as m 
left outer join Table1 as t
     on m.mnt = month(txn_date)
group by mnt

这是最初的工作sqlfiddle