有如下一张表:表名为report did      p_id    gx_name     hgl 001001    XHD65    焊接          0.97 
001002    XHD65    割弹簧      0.90 
001003    XHD65    充气          0.98 
001004    XHD65    调试          0.99 
001005    XHD65    组装          0.96 
001006    XHD65    包装          0.96 
001001    XHD70    焊接          0.97 
001002    XHD70    割弹簧        0.98 
001003    XHD70    充气          0.99 
001004    XHD70    调试          0.91 
001005    XHD70    组装          0.92 
001006    XHD70    包装          0.93 
说明:did为编号,p_id为产品名称 ,gx_name为工序名称  hgl为工序合格率 
其中一个p_id(产品)对应多道工序。表中为一个产品对应6道工序,相应有6个工序合格率(hgl) 
问题:实现所有产品的每一道工序合格率的乘积,按工序名称分组(gx_name) 
即实现如下结构 
gx_namne    hgl 焊接            0.97*0.97 
充气            0.98*0.99 
包装            0.96*0.93 
调试            0.99*0.91 
组装            0.96*0.92 
割弹簧        0.90*0.98 
特别提醒:report表中的数据是不确定的,是用户动态输入的。 请各位大侠指点,谢谢了。 

解决方案 »

  1.   

    select gx_namne, exp(sum(ln(hgl))) from report group by gx_namne   
      

  2.   

    --如果只是显示
    select m.gx_namne ,  hgl = cast(m.hgl as varchar) + '*' + cast(n.hgl as varchar) 
    from tb m , tb n
    where m.p_id = 'XHD65' and n.p_id = 'XHD70' and m.gx_name = n.gx_name--如果是计算
    select m.gx_namne ,  hgl = m.hgl * n.hgl
    from tb m , tb n
    where m.p_id = 'XHD65' and n.p_id = 'XHD70' and m.gx_name = n.gx_name