按年统计大于1的数据,按12个月列数据统计、合计。
id(int) itemA(int 0 || 1) itemB(int 0 || 1) Date(datetime)
1 0 1 2018-08-01
2 1 0 2018-07-01
3 1 0 2018-07-01
4 1 0 2018-07-01
5 0 1 2018-07-01
.
.
查询显示
类型 1月 2月 3月 4月 5月 6月 7月 8月 ..... 合计
itemA 0 0 0 0 0 0 3 0 3
itemB 0 0 0 0 0 0 1 1 2
合计 0 0 0 0 0 0 4 1 5
-----------------------------------------------------------------------------------------------------------------------
-- 例子
create table t ( id int,itemA int, itemB int,Date datetime)
go
insert t
select 1 ,0 ,1 ,'2018-08-01'
union select 2 ,1 ,0 ,'2018-07-01'
union select 3 ,1 , 0 ,'2018-07-01'
union select 4 ,1 , 0 ,'2018-07-01'
union select 5 ,0 ,1 ,'2018-07-01'
---
select col ,
sum([1]) [1],sum([2]) [2],sum([3]) [3],sum([4]) [4],sum([5]) [5],sum([6]) [6],
sum([7]) [7],sum([8]) [8],sum([9]) [9],sum([10])[10],sum([11])[11],sum([12]) [12]
from ( select col,MONTH([DATE]) m , sum(case when col ='itemA' then itemA else itemB end) val
from t cross apply (select 'itemA' col union select 'itemB') b
group by col,MONTH([DATE])
) t
pivot (sum(val) for m in ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12])) a
group by rollup (col)
--
drop table t