关于DRUID sql parse 的问题

wolf909867753 发布于 2015/06/18 09:42
阅读 481
收藏 0

@wenshao 你好,想跟你请教个问题:

你好,在使用DRUID的时候出现 ERROR (StatFilter.java:147)com.alibaba.druid.sql.parser.ParserException: syntax error, error in :'nk() OVER(PARTITION BY t.flt_year O',expect RPAREN, actual OVER OVER但是数据查询成功,完整sql如下:select
                 tb1.flt_year
                ,tb1.line_region
                ,round(100*cast(tb1.region_pax/tb2.year_pax as numeric(10,4))) as ratio
        from
                (
                 select
                            tt1.flt_year
                         ,tt1.line_region
                         ,tt1.region_pax
                 from
                         (
                          select
                                     t.flt_year
                                    ,t.line_region
                                    ,t.region_pax
                                    ,rank() OVER(PARTITION BY t.flt_year ORDER BY t.region_pax desc) as rank_region_pax
                          from
                                    (
                                     select
                                                substring(flt_date,0,5) as flt_year
                                             ,line_region
                                             ,sum(pax_x_dstnc) as region_pax
                                     from
                                                hzs_data.hzs_amount_price_index_trunk_branch
                                     where
                                                trim(flt_type)='D'
                                     and
                                                trim(line_type)='trunk'
                                     and
                                                to_date(flt_date) between to_date(to_char(current_date-interval '1 day'-interval '4 years','YYYY')||'0101') and to_date(to_char(current_date,'YYYY')||'0101','YYYYMMDD')- interval '1 day'
                                     group by 1,2
                                    )t
                          where t.region_pax is not null
                         )tt1
                 where tt1.rank_region_pax <=10
                 union
                 select
                            tt2.flt_year
                         ,'Others'
                         ,sum(tt2.region_pax) as region_pax
                 from
                         (
                          select
                                     t.flt_year
                                  ,t.line_region
                                  ,t.region_pax
                                  ,rank() OVER(PARTITION BY t.flt_year ORDER BY t.region_pax desc) as rank_region_pax
                          from
                                  (
                                   select
                                                substring(flt_date,0,5) as flt_year
                                             ,line_region
                                             ,sum(pax_x_dstnc) as region_pax
                                     from
                                                hzs_data.hzs_amount_price_index_trunk_branch
                                     where
                                                trim(flt_type)='D'
                                     and
                                                trim(line_type)='trunk'
                                     and
                                                to_date(flt_date) between to_date(to_char(current_date-interval '1 day'-interval '4 years','YYYY')||'0101') and to_date(to_char(current_date,'YYYY')||'0101','YYYYMMDD')- interval '1 day'
                                     group by 1,2
                                  )t
                          where t.region_pax is not null
                         )tt2
                         where tt2.rank_region_pax>10
                         group by 1,2
                )tb1
                left outer join
                (
                 select
                            substring(flt_date,0,5) as flt_year
                         ,sum(pax_x_dstnc) as year_pax
                 from
                            hzs_data.hzs_amount_price_index_trunk_branch
                 where
                            trim(flt_type)='D'
                 and
                            trim(line_type)='trunk'
                 and
                            to_date(flt_date) between to_date(to_char(current_date-interval '1 day'-interval '4 years','YYYY')||'0101') and to_date(to_char(current_date,'YYYY')||'0101','YYYYMMDD')- interval '1 day'
                 group by 1
                )tb2
              on tb1.flt_year = tb2.flt_year
              where tb2.flt_year = ?
        order by 1,3 desc

加载中
返回顶部
顶部