源表:
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

解决方案 »

  1.   

    如果地点只有1号和2号两类,可以参考下面的代码,否则,就得用存储过程了,一条SQL可能不行drop table t;
    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
      

  2.   

    若不用你的INSERT 语句插入记录 而是 原有的记录  
    查出来是空的