表1:
槽号  品味       日期
101   al99.90    2005-1-30
表2:
品味   一车间   二车间    日期
其中一车间的槽号是以1,2,3开头,二车间的槽号是4,5,6开头
品味为7种,是固定的,如果表一中没有,则表二中显示为0。
如:表一中没有品味为al99.00则:
表二:
al99.00   0      0     2005-1-30
品味:al99.90,al99.85,al99.70A,AL99.70,AL99.60 ,AL99.50,AL99.00
从表一到表二怎么做效率高点?
如果表二中己经统计出,则如果再统计时,先删除,再插入或修改

解决方案 »

  1.   

    同一问题在:
    http://community.csdn.net/Expert/topic/3765/3765316.xml?temp=.3524134
    http://community.csdn.net/Expert/topic/3765/3765324.xml?temp=.4243738
    http://community.csdn.net/Expert/topic/3765/3765288.xml?temp=5.977809E-03
      

  2.   

    create table tab1
     (槽号 char(3),
      品味 char(10),
      日期 char(10)
      );
    insert into tab1
    select '101','al99.90', '2005-1-30' from dual;
    insert into tab1
    select '102','al99.90', '2005-1-30' from dual;commit;create table pingwei
    (品味 char(10));insert into pingwei values ('al99.90');
    insert into pingwei values ('al99.85');
    insert into pingwei values ('al99.70A');
    insert into pingwei values ('AL99.70');
    insert into pingwei values ('AL99.60');
    insert into pingwei values ('AL99.50');
    insert into pingwei values ('AL99.00');
    commit;
    select b.品味,nvl(a.车间1,0) 车间1,nvl(车间2,0) 车间2,日期 from(
    select 品味,sum(车间1)车间1,sum(车间2)车间2,日期 from
    (select 品味,decode(floor(to_number(substr(槽号,1,1))/3),0,1,0) 车间1,
    decode(floor(to_number(substr(槽号,1,1))/3),1,1,0) 车间2,
    日期 from tab1) a
    group by 品味,日期) a,pingwei b
    where a.品味(+)=b.品味;
    drop table tab1;
    drop table pingwei;
      

  3.   

    结果品味            车间1      车间2 日期
    ---------- ---------- ---------- ----------
    AL99.00             0          0 
    AL99.50             0          0 
    AL99.60             0          0 
    AL99.70             0          0 
    al99.70A            0          0 
    al99.85             0          0 
    al99.90             2          0 2005-1-30