先把图一大类从小到大来选取,在把类别分开,按标记1,2.把这个表中的字段写入表2中

解决方案 »

  1.   


    select a.大类,a.名称 as 标记1,a.数量,a.重量,b.名称 as 标记2,b.数量,b.重量
     from
    (select 大类,名称,数量,重量,rownum rn from t1 where 标记=1) a
    full join
    (select 大类,名称,数量,重量,rownum rn from t1 where 标记=2) b
    on a.rn=b.rn
    order by 大类;这样试试,未测试
      

  2.   


    select a.大类,a.名称 as 标记1,a.数量,a.重量,b.名称 as 标记2,b.数量,b.重量
     from
    (select 大类,名称,数量,重量,row_number()over(partition by 大类 order by rownum) rn from t1 where 标记=1) a
    full join
    (select 大类,名称,数量,重量,row_number()over(partition by 大类 order by rownum) rn from t1 where 标记=2) b
    on a.rn=b.rn 
    order by 大类;这样
      

  3.   

    这样也不行吧……with t1 as(
    select 1 大类,'苹果' 名称,2 数量,10 重量,1 类别,1 标记 from dual union all
    select 1 大类,'橘子' 名称,3 数量,9  重量,1 类别,2 标记 from dual union all
    select 1 大类,'鸭梨' 名称,1 数量,4  重量,1 类别,2 标记 from dual union all
    select 1 大类,'葡萄' 名称,5 数量,12 重量,2 类别,1 标记 from dual union all
    select 1 大类,'杏'   名称,3 数量,6 重量,2 类别,2 标记 from dual union all
    select 2 大类,'猪肉' 名称,1 数量,500 重量,1 类别,1 标记 from dual union all
    select 2 大类,'牛肉' 名称,2 数量,2600 重量,1 类别,2 标记 from dual union all
    select 2 大类,'羊肉' 名称,5 数量,4700 重量,1 类别,2 标记 from dual 
    )
    select nvl(a.大类,b.大类),a.名称 as 标记1,a.数量,a.重量,b.名称 as 标记2,b.数量,b.重量
     from
    (select 大类,名称,数量,重量,row_number()over(partition by 大类 order by rownum) rn from t1 where 标记=1) a
    full join
    (select 大类,名称,数量,重量,row_number()over(partition by 大类 order by rownum) rn from t1 where 标记=2) b
    on a.rn=b.rn and a.大类=b.大类
    order by 1;这样可以了 - -