这样的情况如何进行分类统计
表1:
custNo name cost prodName
1 mike 3.7 面包
1 lisa 5.8 水壶
1 马华 30 雨伞
2 何峰 17 面包
2 张东 13 鞋
.....
表2:
prodType prodName
食物 面包
食物 香肠
日用品 水壶
日用品 雨伞
日用品 鞋
....
需要统计结果为:
custNo 食物 日用品
1 3.7 35.8
2 17 13
这种统计怎么写sql啊?
------解决方案--------------------declare @sql varchar(8000)
set @sql= ' '
select @sql=@sql+ ',[ '+prodType+ ']=sum(case prodType when ' ' '+prodType+ ' ' ' then cost else 0 end) '
from 表2 group by prodType
set @sql= 'select custNo '+@sql+ ' from 表1 a,表2 b where a.prodName=b.prodName group by custNo '
exec(@sql)
------解决方案--------------------create table #tmp (custNo int,prodType varchar(20),cost decimal(9,1))
insert #tmp select custNo,prodType,sum(cost) cost
from (select a.custNo,a.name,a.cost,a.prodName,b.prodType
from 表1 a inner join 表2 b on a.prodName=b.prodName) c
group by custNo,prodType order by custNo
select distinct a.custNo,(select cost from #tmp where custNo=a.custNo and prodType= '食物 ') 食物,
(select cost from #tmp where custNo=a.custNo and prodType= '日用品 ') 日用品
from #tmp a inner join (select distinct custNo from 表1) b on a.custNo=b.custNo
drop table #tmp