group_name    member_type  brand    cnt
市人民政府 1 1000 28
市人民政府 1 1016 6
市人民政府 1 1022 6
市人民政府 2 1000 1
市人民政府 3 1000 9
市人民政府 3 1016 2
市人民政府 3 1022 1
区人民政府 1 1000 13
区人民政府 1 1016 3
区人民政府 1 1022 2
区人民政府 3 1000 3
.                  
.
.group_name 里有成员member_type三种(1,2,3),成员所用的品牌也有3种(1000,1016,1022),cnt是其已经统计出来的数量,现在要求把结果变成以下形式:
group_name             1           |         2              |         3
             1000    1016    1022  |  1000    1016    1022  | 1000    1016  1022          
市人民政府     28      6       6   |    1       0       0   |   9       2     1
区人民政府     13      3       2   |    0       0       0   |    3      0     0
.
.
也就是统计每一个group_name,先按member_type分成1,2,3,再把每一个member_type又各分成,1000,1016,1022三种,然后统计各数量....数量已经统计出来,就是cnt,但是不知道列怎么转化成行....,望高手帮忙,谢谢!

解决方案 »

  1.   

    首先确定你要的列数其实是9列。
    市政1_1000,市政1_1016,市政1_1022,市政2_1000, ...
    以后的就好了吧,select substr(group_name,1,5) as group_name,
           (case 
               when substr(group_name,1,5)='市政' and member_type=1000 then
                  cnt
           ) sz_1000,
           .....
           .....
      

  2.   

    但是oracle 8i好像不支持case when 哦???
    有没别的办法?
      

  3.   

    回xjqqxjqq(JAI),
    我也知道用decode(a,b,c),但是decode好像只支持一个条件吧?
    我这边需要用到两个条件,(看young0x()写的),
    case  when substr(group_name,1,5)='市政' and member_type=1000 then  cnt
    ,这边用到substr(group_name,1,5)='市政' and member_type=1000 两个条件,那用decode 该怎么写呢?