报表分析
我有一张表A
序号 品名 数量 日期
1 产品1 20 2006-12-9
2 产品1 10 2006-12-15
3 产品2 15 2006-11 23
4 产品3 12 2006-11-24
5 产品4 10 2007-01-4
6 产品6 10 2007-01-8
7 产品6 15 2007-01-7
我用SQL按月份累加了
select 品名,数量=sum(数量,DATEPART(month, 日期) as 月份 from A group by 品名,DATEPART(month, 开单日期)
效果如下:
序号 品名 数量 月份
1 产品1 30 12
2 产品2 15 11
3 产品3 12 11
4 产品4 10 1
5 产品6 25 1
我现在想输入格式为:
品名 12月份 11月份 1月份
产品1 30 0 0
产品2 0 15 0
产品3 0 12 0
产品4 0 0 10
产品6 0 0 25
请问这样的SQL要怎么写?
不知在C#里用水晶报表能否做到?
------解决方案--------------------create table tab
(
DateClass varchar(10),
Class varchar(20),
count varchar(20)
)
insert into tab select '产品1 ', '30 ', '12 '
insert into tab select '产品2 ', '15 ', '11 '
insert into tab select '产品3 ', '12 ', '11 '
insert into tab select '产品4 ', '10 ', '1 '
insert into tab select '产品5 ', '25 ', '1 '
--语句
declare @sql varchar(2000)
set @sql = 'select DateClass '
select @sql = @sql + ',sum(case count when ' ' '+a.count+ ' ' ' then class else 0 end )as [ '+a.count+ '月] '
from (select distinct count from tab)a
set @sql = @sql + ' from tab group by DateClass '
exec(@sql)
------解决方案--------