`

有木有更好的group by写法代替这样的查询

阅读更多

select t4.pl_ssname,
       t.pl_sno,
       t2.knsum,
       t3.knsumSum,
       round(t2.knsum / t3.knsumSum * 100, 1) finish_pct,
       sum(t6.plan_pd) planpd
  from pd_wol t,
       (select round(sum((b.wol_nsum2 + b.wol_ndef2 + b.wol_ndef4 +
                         b.wol_ndef10) * b.sk_nlength * b2.sk_nnum1) / 1000,
                     3) knsum,
               b.pl_sno
          from pd_wol b, bd_item b2, sfm_workshop b3
         where b.sk_sno = b2.sk_sno
           and b.ws_sno = b3.ws_sno
           and b3.ws_sdef1 = '2'
           and (b.wol_sstat = '3' or b.wol_sstat = '5')
         group by b.pl_sno) t2,
       (select round(sum((b.wol_nsum2 + b.wol_ndef2 + b.wol_ndef4 +
                         b.wol_ndef10) * b.sk_nlength * b2.sk_nnum1) / 1000,
                     3) knsumSum,
               b.pl_sno
          from pd_wol b, bd_item b2, sfm_workshop b3
         where b.sk_sno = b2.sk_sno
           and b.ws_sno = b3.ws_sno
           and b3.ws_sdef1 = '2'
           and (b.wol_sstat <> '4' or b.wol_sstat <> '6')
         group by b.pl_sno) t3,
       bd_pline t4,
       sfm_workshop t5,
       (select pl_sno,
               pl_nsnum * (select ceil((To_date('2012-08-07', 'yyyy-mm-dd') -
                                       To_date('2012-08-06', 'yyyy-mm-dd')))
                             FROM DUAL) * 24 plan_pd
          from bd_pline) t6
 where t.pl_sno = t2.pl_sno(+)
   and t.pl_sno = t3.pl_sno(+)
   and t.pl_sno = t4.pl_sno
   and t.ws_sno = t5.ws_sno
   and t.pl_sno = t6.pl_sno(+)
   and t5.ws_sdef1 = '2'
   and t3.knsumSum <> 0
 group by t4.pl_ssname, t.pl_sno, t2.knsum, t3.knsumSum
 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics