例如: SELECT COUNT(*),SUM(SAL) FROM EMP WHERE DEPT_NO = 0020 AND ENAME LIKE ‘SMITH%'; 
SELECT COUNT(*),SUM(SAL) FROM EMP WHERE DEPT_NO = 0030 AND ENAME LIKE ‘SMITH%'; 
你可以用DECODE函数高效地得到相同结果 
SELECT COUNT(DECODE(DEPT_NO,0020,'X',NULL)) D0020_COUNT, COUNT(DECODE(DEPT_NO,0030,'X',NULL)) D0030_COUNT, SUM(DECODE(DEPT_NO,0020,SAL,NULL)) D0020_SAL, SUM(DECODE(DEPT_NO,0030,SAL,NULL)) D0030_SAL FROM EMP WHERE ENAME LIKE ‘SMITH%'; 

解决方案 »

  1.   

    这叫行转列
    根据不同的判断条件汇,总值不同的列体现
    菜鸟学sql必须经历的一个门槛专题
    搜一搜
      

  2.   

    Share your knowledge with us?
      

  3.   

    sum函数可以直接这样使用吗?不需要跟group by?????
      

  4.   

    不知道是不是求出 每个部门的数量,和总计。如果是可以写成这样
    SELECT DEPT_NO, COUNT(*),SUM(SAL) 
    FROM EMP  
    group by DEPT_NO
      

  5.   

    可以不跟GROUP BY,如果没有非聚合函数字段,建议还是跟个常量的,如:GROUP BY 1,有碰到过一次问题就这个导致的