Sql 总和栏总计和两个不同期间总计
我知道这听起来有点奇怪,但我有两个问题要问Sql 总和栏总计和两个不同期间总计,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我知道这听起来有点奇怪,但我有两个问题要问 sum()列总计-NetAmount 有两个时期的数据进行比较-基本金额之和 我的问题如下 select a.usage_id BillingGroup, a.usage_desc BGDesc, sum(a.base_amount) NetAmount from cdi_item_dtl a, cdi_invoice_hdr b where a.tran_type = 'RM_CMI' and a.tran_no = b.tran_no and b.
select a.usage_id BillingGroup, a.usage_desc BGDesc, sum(a.base_amount) NetAmount
from cdi_item_dtl a, cdi_invoice_hdr b
where a.tran_type = 'RM_CMI'
and a.tran_no = b.tran_no
and b.tran_date between '2014-06-01 00:00:00.000' and '2014-06-30 00:00:00.000'
group by a.usage_id, a.usage_desc
order by a.usage_id
这给了我NetAmount所有组的总数,我想得到NetAmount的总数
第二点,正如该查询显示的2014年6月期间,是否有可能将NetAmount2013作为2013年6月的下一列,并在单个查询中列出?快速简便的方法如下:您可能应该避免硬编码字符串,并与
月份()和年份()进行一些比较,以改进这一点
函数,但这将向您展示基本思想
select
a.usage_id BillingGroup,
a.usage_desc BGDesc,
sum(CASE WHEN b.tran_date between '2014-06-01 00:00:00.000' and '2014-06-30 00:00:00.000' THEN a.base_amount ELSE 0 END) NetAmount2014,
sum(CASE WHEN b.tran_date between '2013-06-01 00:00:00.000' and '2013-06-30 00:00:00.000' THEN a.base_amount ELSE 0 END) NetAmount2013
from cdi_item_dtl a, cdi_invoice_hdr b
where
a.tran_type = 'RM_CMI'
and a.tran_no = b.tran_no
and
(
b.tran_date between '2014-06-01 00:00:00.000' and '2014-06-30 00:00:00.000'
OR b.tran_date between '2013-06-01 00:00:00.000' and '2013-06-30 00:00:00.000'
)
group by a.usage_id, a.usage_desc
order by a.usage_id