请问这种情况 下应该怎么样分类统计?
就是有三种材料,三种数量, 材料的来源分客户提供 和本厂提供 两种
现要求统计出 客户提供 的每种材料的汇总
即:
张三 材料A 300
张三 材料C 100
李四 材料B 100
李四 材料A 200
[解决办法]
建表语句:
--drop table tb
create table tb(
客户名称 varchar(20),
交易日期 datetime,
一号材料名称 varchar(20),
一号材料数量 int,
一号材料来源 varchar(20),
二号材料名称 varchar(20),
二号材料数量 int,
二号材料来源 varchar(20),
三号材料名称 varchar(20),
三号材料数量 int,
三号材料来源 varchar(20))
insert into tb
select '张三','2013-1-1','材料A',100,'客户提供','材料B',100,'本厂提供','材料C',100,'客户提供' union all
select '李四','2013-1-1','材料B',100,'客户提供','材料A',100,'客户提供','材料A',100,'客户提供' union all
select '张三','2013-1-1','材料A',100,'客户提供','材料A',100,'本厂提供','材料A',100,'客户提供'
select 客户名称,材料名称,SUM(材料数量) as 材料数量
from
(
select 客户名称,一号材料名称 as 材料名称,一号材料数量 as 材料数量,一号材料来源 as 材料来源 from tb
union all
select 客户名称,二号材料名称 as 材料名称,二号材料数量 as 材料数量,二号材料来源 as 材料来源 from tb
union all
select 客户名称,三号材料名称 as 材料名称,三号材料数量 as 材料数量,三号材料来源 as 材料来源 from tb
)t
where 材料来源 = '客户提供'
group by 客户名称,材料名称
order by 客户名称 desc
/*
客户名称材料名称材料数量
张三 材料A300
张三 材料C100
李四 材料A200
李四 材料B100
*/