首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

关于分析函数(急求sql)解决方案

2012-02-15 
关于分析函数(急求sql)这个sql能用分析函数改写或者优化不太慢了selectSUM(DECODE(a.summary_acct_item_id

关于分析函数(急求sql)
这个sql能用分析函数改写     或者优化不     太慢了


select   SUM(DECODE(a.summary_acct_item_id,   '100000 ',   a.CHARGE,   ' '))   CHARGE100000,
              SUM(DECODE(a.summary_acct_item_id,   '100001 ',   a.CHARGE,   ' '))   CHARGE100001,
              SUM(DECODE(a.summary_acct_item_id,   '100002 ',   a.CHARGE,   ' '))   CHARGE100002,
              SUM(DECODE(a.summary_acct_item_id,   '100003 ',   a.CHARGE,   ' '))   CHARGE100003,
              SUM(DECODE(a.summary_acct_item_id,   '100004 ',   a.CHARGE,   ' '))   CHARGE100004,
              SUM(DECODE(a.summary_acct_item_id,   '100005 ',   a.CHARGE,   ' '))   CHARGE100005,
              SUM(DECODE(a.summary_acct_item_id,   '100006 ',   a.CHARGE,   ' '))   CHARGE100006,
              SUM(DECODE(a.summary_acct_item_id,   '100007 ',   a.CHARGE,   ' '))   CHARGE100007,
              SUM(DECODE(a.summary_acct_item_id,   '100008 ',   a.CHARGE,   ' '))   CHARGE100008,
              SUM(DECODE(a.summary_acct_item_id,   '100009 ',   a.CHARGE,   ' '))   CHARGE100009,
              SUM(DECODE(a.summary_acct_item_id,   '100010 ',   a.CHARGE,   ' '))   CHARGE100010,
              SUM(DECODE(a.summary_acct_item_id,   '100011 ',   a.CHARGE,   ' '))   CHARGE100011,
              SUM(DECODE(a.summary_acct_item_id,   '100012 ',   a.CHARGE,   ' '))   CHARGE100012,
              SUM(DECODE(a.summary_acct_item_id,   '100013 ',   a.CHARGE,   ' '))   CHARGE100013,
              SUM(DECODE(a.summary_acct_item_id,   '100014 ',   a.CHARGE,   ' '))   CHARGE100014,
              SUM(DECODE(a.summary_acct_item_id,   '100015 ',   a.CHARGE,   ' '))   CHARGE100015,
              SUM(DECODE(a.summary_acct_item_id,   '100016 ',   a.CHARGE,   ' '))   CHARGE100016,
              SUM(DECODE(a.summary_acct_item_id,   '100017 ',   a.CHARGE,   ' '))   CHARGE100017,
              SUM(DECODE(a.summary_acct_item_id,   '100018 ',   a.CHARGE,   ' '))   CHARGE100018,
              SUM(DECODE(a.summary_acct_item_id,   '100019 ',   a.CHARGE,   ' '))   CHARGE100019,
              SUM(DECODE(a.summary_acct_item_id,   '100020 ',   a.CHARGE,   ' '))   CHARGE100020,
              SUM(DECODE(a.summary_acct_item_id,   '100021 ',   a.CHARGE,   ' '))   CHARGE100021,


              SUM(DECODE(a.summary_acct_item_id,   '100022 ',   a.CHARGE,   ' '))   CHARGE100022,
              SUM(DECODE(a.summary_acct_item_id,   '100023 ',   a.CHARGE,   ' '))   CHARGE100023,
              SUM(DECODE(a.summary_acct_item_id,   '100024 ',   a.CHARGE,   ' '))   CHARGE100024,
              SUM(DECODE(a.summary_acct_item_id,   '100025 ',   a.CHARGE,   ' '))   CHARGE100025,
              SUM(DECODE(a.summary_acct_item_id,   '100026 ',   a.CHARGE,   ' '))   CHARGE100026,
              SUM(DECODE(a.summary_acct_item_id,   '100027 ',   a.CHARGE,   ' '))   CHARGE100027,
              SUM(DECODE(a.summary_acct_item_id,   '100028 ',   a.CHARGE,   ' '))   CHARGE100028,
              SUM(DECODE(a.summary_acct_item_id,   '100032 ',   a.CHARGE,   ' '))   CHARGE100032,
              SUM(DECODE(a.summary_acct_item_id,   '100031 ',   a.CHARGE,   ' '))   CHARGE100031,
              SUM(DECODE(a.summary_acct_item_id,   '100033 ',   a.CHARGE,   ' '))   CHARGE100033,
              a.STAFF_ID,
              a.CUST_ID,
              a.CUST_NAME,
              a.billing_cycle_id,
              a.CUST_ADDRESS_NAME
    from   (select   *   from   area   where   area_id   in   (101))   b,   acct_income_2005   a
  where   a.billing_Cycle_Id   > =   10702
      and   a.billing_Cycle_Id   <=   10707
      and   b.area_id   =   a.area_id
  group   by   a.STAFF_ID,
                    a.cust_id,
                    a.cust_name,
                    a.billing_cycle_id,
                    a.cust_address_name

[解决办法]
首先在 summary_acct_item_id, billing_Cycle_Id 和area_id列上建立索引,且可以改为

Select .....
from area b, acct_income_2005 a
where b.area_id = a.area_id and a.area_id=101 and
a.billing_Cycle_Id > = 10702
and a.billing_Cycle_Id <= 10707
group by a.STAFF_ID,
a.cust_id,
a.cust_name,
a.billing_cycle_id,
a.cust_address_name

[解决办法]
优化同上,这种情况用分析函数解决不了问题 ...
[解决办法]
jf

热点排行