有一个表table
  产品    颜色    数量
 产品1    红色    100
 产品2    红色     88
 产品1    蓝色     56
 产品1    红色     null
 产品1    蓝色     48
 产品2    蓝色      87
1.以产品分组,显示其中红色数量大于蓝色数量的的产品名称与差值?2 要显示成下列形式
 产品   红色数量    蓝色数量

解决方案 »

  1.   

    1.以产品分组,显示其中红色数量大于蓝色数量的的产品名称与差值? 
    select 产品, 红色-蓝色 差值
    from (
    select 产品, 
      sum(decode(颜色,'红色',decode(数量,null,0,数量),0)) 红色,
      sum(decode(颜色,'蓝色',decode(数量,null,0,数量),0)) 蓝色
    from ttt3
    group by 产品
    ) where 红色>蓝色
    2 要显示成下列形式 
    产品  红色数量    蓝色数量
    select 产品, 
      sum(decode(颜色,'红色',decode(数量,null,0,数量),0)) 红色,
      sum(decode(颜色,'蓝色',decode(数量,null,0,数量),0)) 蓝色
    from ttt3
    group by 产品
      

  2.   


    1.
    SELECT SUM(DECODE (颜色,'红色',NVL(数量,0) ,-NVL(数量,0) )) CHA,
    产品 FROM TABLE GROUP BY 
    产品 HAVING SUM(DECODE (颜色,'红色',NVL(数量,0) ,-NVL(数量,0) )) >0;
    2.
    SELECT 产品,SUM(DECODE (颜色,'红色',NVL(数量,0), 0 )) HSSL,
     SUM(DECODE (颜色,'蓝色',NVL(数量,0), 0 )) LSSL FROM table
    group by 产品 
      

  3.   


    1.
    select  t.prod_name,
            sum(decode(t.color,'红色',nvl(t.score,0),0))"红色",
            sum(decode(t.color,'蓝色',nvl(t.score,0),0))"蓝色"
    from temp t
    group by t.prod_name2.
    select d.prod_name,'蓝色',d.cha
    from (
    select t.prod_name,
           sum(decode(t.color,'红色',t.score,-t.score)) cha
    from temp t
    group by t.prod_name) d
    where d.cha>0