我知道这听起来有点奇怪,但我有两个问题要问
我的查询如下:
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月的下一列?
答案 0 :(得分:1)
快速简便的方法如下:您应该通过避免使用硬编码字符串并对MONTH()
和YEAR()
函数进行一些比较来改进这一点,但这会告诉您基本理念。
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