表格如下
NAME  PART  REUSLT
a     MM    0
b     MM    1
c     MM    2
d     GG    1
e     GG    2
f     OO    1
G     OO    1结果如下
PART  REUSLT=0 REUSLT=1 REUSLT=2
MM    1        1        1
GG    0        1        1
OO    0        2        0就是求同一PART下不同REUSLT的总数
我用INNER JOIN PART相等的话 当没有数据时不会返回0 这个该怎么解决

解决方案 »

  1.   


    WITH tab AS(
    SELECT 'a' name, 'MM' part, 0 result FROM dual UNION ALL
    SELECT 'b', 'MM', 1 FROM dual UNION ALL 
    SELECT 'c', 'MM', 2 FROM dual UNION ALL
    SELECT 'd', 'GG', 1 FROM dual UNION ALL
    SELECT 'e', 'GG', 2 FROM dual UNION ALL
    SELECT 'f', 'OO', 1 FROM dual UNION ALL
    SELECT 'G', 'OO', 1 FROM dual 
    )
    --以上是测试数据
    select part,
           Sum(Decode(result,0,1,0)) "REUSLT=0",
           Sum(Decode(result,1,1,0)) "REUSLT=1",
          Sum(Decode(result,2,1,0)) "REUSLT=2"
    FROM tab
    GROUP BY part
    ORDER BY part --结果:
    PART  REUSLT=0   REUSLT=1   REUSLT=2
    ----------------------------------------
    GG    0          1          1
    MM    1          1          1
    OO    0          2          0