源表:
ID 操作一 操作二 地点
1 张三 张三 1号地点
2 张三 李四 1号地点
3 李四 王五 2号地点
4 张三 王五 1号地点
5 王五 李四 2号地点
6 李四 张三 1号地点
需要得出下表:
姓名 1号地点操作一数量 |1号地点操作二数量|2号地点操作一数量|2号地点操作二数量
张三 3 2 0 0
李四 1 1 1 1
王五 0 1 1 1
ID 操作一 操作二 地点
1 张三 张三 1号地点
2 张三 李四 1号地点
3 李四 王五 2号地点
4 张三 王五 1号地点
5 王五 李四 2号地点
6 李四 张三 1号地点
需要得出下表:
姓名 1号地点操作一数量 |1号地点操作二数量|2号地点操作一数量|2号地点操作二数量
张三 3 2 0 0
李四 1 1 1 1
王五 0 1 1 1
create table t
( id number,
cz1 varchar(20),
cz2 varchar(20),
dd varchar(20));
insert into t
select 1,'张三','张三','1号' from dual
union all
select 2,'张三','李四','1号' from dual
union all
select 3,'李四','王五','2号' from dual
union all
select 4,'张三','王五','1号' from dual
union all
select 5,'王五','李四','2号' from dual
union all
select 6,'李四','张三','1号' from dual;select name,
sum(decode(dd,'1号操作1数量',1,0)) as "1号操作1数量",
sum(decode(dd,'1号操作2数量',1,0)) as "1号操作2数量",
sum(decode(dd,'2号操作1数量',1,0)) as "2号操作1数量",
sum(decode(dd,'2号操作2数量',1,0)) as "2号操作2数量"
from
(
select cz1 as name,dd||'操作1数量' as dd
from t
union all
select cz2 as name,dd||'操作2数量' as dd
from t
)
group by name;NAME 1号操作1数量 1号操作2数量 2号操作1数量 2号操作2数量
-------------------- ------------ ------------ ------------ ------------
李四 1 1 1 1
王五 0 1 1 1
张三 3 2 0 0
查出来是空的