题目:用sql语句完成下列1,2题,至于测试的时候在什么数据库中都可以
Table product1;
产品productName1   颜色color1   数量num1      产品1       红          133
      产品1       蓝          126
      产品2       蓝          103
      产品2       红          null
      产品2       红          89
      产品1       红          2031.按产品分类仅列出各类商品中红色多于蓝色的商品名称及差额数量2.按产品分类,将数据按如下方式进行统计显示      产品productName2  红色rednum  蓝色bluenum
           产品1           1500       1298
           .........

解决方案 »

  1.   


    --1
    select productName1,color1,
           sum(decode(color1,'红',1,0))-sum(decode(color1,'蓝',1,0)) num_
      from product1
     group by productName1,color1
     having sum(decode(color1,'红',1,0)) > sum(decode(color1,'蓝',1,0)); 
    --2
    select productName1,
           sum(decode(color1,'红',1,0)) 红色rednum ,
           sum(decode(color1,'蓝',1,0)) 蓝色bluenum
      from product1
     group by productName1;
      

  2.   

    非常感谢一楼,但是你的那个1好像只是记录条数而没有涉及到产品的数量,另外那个null值在decode中是怎么处理的?
      

  3.   

    1 他没细看,你把decode(color1,'红',1,0)换成decode(color1,'红',num1,0)就完事了2 decode判断的是红/蓝,null还是103,104是被sum计算的,你不用管。
      

  4.   


    select productName1,color1,
    sum(decode(color1,'红',nvl(num1,0),0))-sum(decode(color1,'蓝',nvl(num1,0),0)) num_
    from product1
    group by productName1,color1
    having sum(decode(color1,'红',nvl(num1,0),0)) > sum(decode(color1,'蓝',nvl(num1,0),0))