有木有更好的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
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值