with as 使用方法参考网址: http://jc-dreaming.iteye.com/blog/772030
with cte_tot as
(select a.accountTemplateId id,count(b.id) num,convert(varchar(10),month(a.updateTime))+'月' date
from t_voucherCreateBatch a,t_voucherCreateBatchDetail b
where a.id=b.batchId and a.state=6 and
a.updateTime >'2016-09-01 00:00:00' and a.updateTime <'2016-10-31 23:59:59'
group by a.accountTemplateId,month(a.updateTime) )
select id,
isnull(convert(dec(18,2),sum(case date WHEN '9月' then num end)),0) '9月',
isnull(convert(dec(18,2),sum(case date WHEN '10月' then num end)),0) '10月'
--SUM(case date when '9月' then num else 0 end ) '9月',
--SUM(case date when '10月' then num else 0 end ) '10月'
from cte_tot
group by id
上面为一个例子,可以在查询一个发放劵在不同月份,不同模板的发放张数