SQL> select * from test1;A                              B                   C
------------------------------ ---------- ----------
20050101                       A                   1
20050101                       B                   1
20050102                       B                   1
20050102                       C                   1SQL> select * from test2;B
--------------------
A
B
C
SQL> select t1.a, t2.b, max(decode(t2.b, t1.b, t1.c, 0)) from zhang.test1 t1, zhang.test2 t2 
  2  group by t1.a, t2.b;A                              B                    MAX(DECODE(T2.B,T1.B,T1.C,0))
------------------------------ -------------------- -----------------------------
20050101                       A                                                1
20050101                       B                                                1
20050101                       C                                                0
20050102                       A                                                0
20050102                       B                                                1
20050102                       C                                                1

解决方案 »

  1.   

    建立一张 test2 表 存放 A, B, C
    把 test1 表替换成 (select count(1),so.order_date,so.organization
    from so
    group by so.order_date,so.organization)
    select t1.so.order_date, t2.b, max(decode(t2.b, t1.so.organization, t1.count(1), 0)) 
    from (select count(1),so.order_date,so.organization
         from so
         group by so.order_date,so.organization) t1, 
    test2 t2 
    group by so.order_date, t2.b