日期:2014-05-17 浏览次数:20482 次
--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
/*
客户名称 材料名称 材料数量
张三 材料A 300
张三 材料C 100
李四 材料A 200
李四 材料B 100
*/