比如一个查询结果是: 
日期          班线    检验点    检验员    生产令号  不良合计(台) 
2008-12-30  L1    PACKING    TESTER    M01      10 
2008-12-30    L1    PACKING    TESTER    M02      15 另一个查询结果是: 
日期          班线    检验点    检验员    生产令号  故障代码  台数 
2008-12-30    L1      PACKING  TESTER    M01      Q2      5 
2008-12-30    L1      PACKING  TESTER    M01      Q3      4 
2008-12-30    L1      PACKING  TESTER    M01      Q8      2 
2008-12-30    L1      PACKING  TESTER    M02      Q2      1 
2008-12-30    L1      PACKING  TESTER    M02      Q3      2 
2008-12-30    L1      PACKING  TESTER    M02      Q8      3 我现在是新建一张表: 
日期          班线    检验点    检验员    生产令号  Q2  Q3  Q8    不良合计(台) 
2008-12-30    L1      PACKING  TESTER    M01    5  4  2      10 
2008-12-30    L1      PACKING  TESTER    M02    1  2  3      15 用存储过程实现这样的功能,你说怎么做呢

解决方案 »

  1.   

    不用存储过程也可以:
    select 日期,班线,检验点,检验员,生产令号,
    sum(case when 故障代码='Q2' then 台数 then 0 end) Q2,
    sum(case when 故障代码='Q3' then 台数 then 0 end) Q3,
    sum(case when 故障代码='Q8' then 台数 then 0 end) Q8,
    sum(台数) 不良合计
    from tb2 
    group by  日期,班线,检验点,检验员,生产令号
      

  2.   

    SELECT A.DATES,A.BX,A.JYD,A.JYY,A.SCHL,
           MAX(CASE B.GZDM WHEN 'Q2' THEN B.TS END) Q2,
           MAX(CASE B.GZDM WHEN 'Q3' THEN B.TS END) Q3,
           MAX(CASE B.GZDM WHEN 'Q8' THEN B.TS END) Q8,
           MAX(A.BLHJ) BLHJ
           FROM TAB A,TAB1 B
           WHERE A.SCHL=B.SCHL
     GROUP BY A.DATES,A.BX,A.JYD,A.JYY,A.SCHL
    结果:
        DATES BX JYD JYY SCHL Q2 Q3 Q8 BLHJ
    2008-12-30 L1 PACKING TESTER M01 5 4 2 10
    2008-12-30 L1 PACKING TESTER M02 1 2 3 15
      

  3.   

    haha,谢谢各位,做法跟我一样,那样要写100多行的sql语句呢.字段好多呢.
      

  4.   

    暂且规定
       查询结果1所用语句是A
      查询结果2所用语句是B
      从结果看:第2个查询结果是明细,第一个查询语句已经是一个汇总
      至于你想要的结果我们在你第2个查询结果所用的语句B的基础上得到
    procedure 小娘子
    isbegin
      insert into 娘子新建的表(rq,bx,jyd,jyy,sclh,Q2,Q3,Q8,sum)
      select a.rq,a.bx,a.jyd,a.jyy,a.sclh,
             sum(decode(a.gzdm,'Q2',a.sum,0)),
             sum(decode(a.gzdm,'Q3',a.sum,0)),
             sum(decode(a.gzdm,'Q8',a.sum,0)),
             sum(decode(a.gzdm,'Q2',a.sum,'Q3',a.sum,'Q8',a.sum,0))
      from (娘子所用语句B(select rq,bx,jyd,jyy,sclh,gzdm,sum from **表 where **条件)a
      group by a.rq,a.bx,a.jyd,a.jyy,a.sclh;
      exception when others then
        ----
    end;
      

  5.   

    来晚了,decode或者case when+sum+group都行