标量子查询改写

SELECT A.CONS_NO,

       A.CONS_NAME,

       (SELECT SUM(T.PURCH_PQ)

          FROMGAS_CA.A_CARD_METER_PAY T

         WHERE CONS_NO = A.CONS_NO

           AND T.PURCH_GAS_TIME > TO_DATE('20160229', 'YYYYMMDD')) 购气量

  FROM GAS_MB.C_CONS A

 WHERE A.ORG_NO LIKE '1125%'

   AND EXISTS

 (SELECT 1

          FROM GAS_MB.C_MP B

         WHERE B.CONS_ID = A.CONS_ID

           AND EXISTS

         (SELECT 1

                  FROM GAS_MB.C_METER

                 WHERE MP_ID = B.MP_ID

                   AND PRODUCE_FACT IN ('0010', '0015', '0024')));

 在子查询的数量比较大的时候查询效率会比较低下,这里用表连接的方式改写一下

SELECT *

  FROM (SELECT A.CONS_NO, A.CONS_NAME, B.购气量

          FROM GAS_MB.C_CONS A,

               (SELECT B1.CONS_NO, SUM(B1.PURCH_PQ) 购气量

                  FROMGAS_CA.A_CARD_METER_PAY B1

                 WHERE B1.ORG_NO LIKE '1125%'

                   AND B1.PURCH_GAS_TIME > TO_DATE('20160229', 'YYYYMMDD')

                 GROUP BY B1.CONS_NO) B

         WHERE A.ORG_NO LIKE '1125%'

           AND A.CONS_NO = B.CONS_NO(+)

           AND EXISTS

         (SELECT 1

                  FROM GAS_MB.C_MP B

                 WHERE B.CONS_ID = A.CONS_ID

                   AND EXISTS

                 (SELECT 1

                          FROM GAS_MB.C_METER

                         WHERE MP_ID = B.MP_ID

                           AND PRODUCE_FACT IN ('0010', '0015', '0024'))))

 WHERE 购气量 IS NOT NULL;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值