解决方案 »

  1.   

    select t1.*
      from table t1,
           (select level - 1 value from dual connect by level <= 21) t2
     where t1.type = t2.value;
      

  2.   

    select t1.*
      from table t1,
           (select level - 1 value from dual connect by level <= 21) t2
     where t1.type = t2.value;

    嗯嗯 这样可以的,但是我觉得这样是没有意义的,楼楼的具体需求是什么?
      

  3.   

    select t1.*
      from table t1,
           (select level - 1 value from dual connect by level <= 21) t2
     where t1.type = t2.value;

    嗯嗯 这样可以的,但是我觉得这样是没有意义的,楼楼的具体需求是什么?我要统计呀。
    类型1 有几个  类型2 有几个 这样的话
    我到时候 根据返回的 datatable 取 row[0] [0]...[20] 就得到 我要的数据了
    貌似 不行啊 T2 哪里定义了?
      

  4.   


    -- 这个意思? row[0] ... row[20]
    select 
      SUM(case when type ='1' then 1 else 0 end )as C1 ,
      SUM(case when type ='2' then 1 else 0 end )as C2 ,
      SUM(case when type ='20' then 1 else 0 end )as C20 ,
    from mytable   
      

  5.   

    抑或是……
    declare
      type t is table of tab1%type index by pls_integer;
      r t;
    begin for i in 0..20 loop
        
        select * 
          into r(i) 
          from tab1
         where type = i; 
        
    end loop;end ;