select 产品名 ,sum(case when 厂编号='01' then 产品销售额 else 0 end) [一分厂] ,sum(case when 厂编号='02' then 产品销售额 else 0 end) [二分厂] from 表 group by 产品名
这要看你用什么数据库,oralce,access写法都不同,但思路一样。上面是sqlserver的
如果只有三种产品则可以使用一个笨办法实现,如果有个产品表(很多产品又没有提供分类则不适用) select 产品名,sum(销量),厂编号 from A where 产品名=‘矿泉水’ group by 时间,产品名,厂编号 union select 产品名,sum(销量),厂编号 from A where 产品名=‘啤酒‘ or 产品名 = ’果汁‘ group by 时间,产品名,厂编号
日常消费品,饮料类 是两个大类,数据库中并没有这两个名称而又要写出来,并且显示形式能够将果汁和啤酒合起来组成一组放在饮料类下,而矿泉水要放在日常消费品下,能够实现么?
产品名 一分厂 二分厂
日常消费品
矿泉水 5000 3500
饮料类
果汁 500 2000
啤酒 200 1000
合计 5700 6500
,sum(case when 厂编号='01' then 产品销售额 else 0 end) [一分厂]
,sum(case when 厂编号='02' then 产品销售额 else 0 end) [二分厂]
from 表
group by 产品名
select 产品名,sum(销量),厂编号
from A
where 产品名=‘矿泉水’
group by 时间,产品名,厂编号
union
select 产品名,sum(销量),厂编号
from A
where 产品名=‘啤酒‘ or 产品名 = ’果汁‘
group by 时间,产品名,厂编号