有下列值: 
id 使用情况 值
10001 总大小 100
10001 已使用 30
10002 总大小 300
10002 已使用 200
10003 总大小 150
10003 已使用 50
根据公式“未使用=总大小-已使用”
得到以下结果:
 id 使用情况 值
10001 总大小 100
10001 已使用 30
10001 未使用 70
10002 总大小 300
10002 已使用 200
10002 未使用 100
10003 总大小 150
10003 已使用 50
10003 未使用 100
求SQL语句,给出思路也行,谢谢!!!

解决方案 »

  1.   

    select * from
    (select id ,使用情况 ,值 from test_a
    union all
    select id ,'未使用' 使用情况,sum(decode(使用情况,'总大小',值,-值)) 值
    from test_a group by id)
    order by id
      

  2.   

    select * from
    (select id ,使用情况 ,值 from test_a
    union all
    select id ,'未使用' 使用情况,sum(decode(使用情况,'总大小',值,-值)) 值
    from test_a group by id)
    order by id
      

  3.   

    实测数据:CREATE TABLE T77
    (
        ID VARCHAR2(20),
        使用情况 VARCHAR2(20),
        值   NUMBER(4)
    );
    DELETE T77;
    INSERT INTO T77 VALUES('10001', '总大小', 100);
    INSERT INTO T77 VALUES('10001', '已使用', 30);
    INSERT INTO T77 VALUES('10002', '总大小', 300);
    INSERT INTO T77 VALUES('10002', '已使用', 200);
    INSERT INTO T77 VALUES('10003', '总大小', 150);
    INSERT INTO T77 VALUES('10003', '已使用', 50);
    SELECT * FROM T77;
    实测结果:
      

  4.   

    非常感谢大家写的sql,问题已解决了。