指定范围查询

SELECT total,row_id,rule_id,area_code,start_num,end_num,suffix,
       dep_airport,arr_airport,frequency,dcs_equipment,dcs_version,
       sub_product,sales_deadline,start_date,end_date,create_user,
       create_time,update_user,update_time
  FROM (SELECT nvl(MAX(row_num) OVER(), 0) AS total,rownum AS row_id,saleRule.*
    FROM (SELECT rownum AS row_num,
       t.rule_id as rule_id,
       t.area_code,
       t.start_num,
       t.end_num,
       t.dep_airport,
       t.arr_airport,
       t.frequency,
       t.cnd_eqt,
       t.cnd_version,
       t.sub_product,
       t.sales_deadline,
       to_char(t.start_date, 'yyyy-MM-dd') AS start_date,
       to_char(t.end_date, 'yyyy-MM-dd') AS end_date,
       t.create_user as create_user,
       to_char(t.create_time, 'yyyy-MM-dd HH24:mi:ss') AS create_time,
       t.update_user as update_user,
       to_char(t.update_time, 'yyyy-MM-dd HH24:mi:ss') AS update_time
      from my_table  t
     where t.airline = '航司二字码'
       and t.area_code = '区域代码'
       and t.suffix = '航班后缀'
       and t.dep_airport = '出发机场'
       and t.arr_airport = '达到机场'
       and t.cnd_eqt = '机型'
       and (instr(t.cnd_version, '机型版本', 1, 1) > 0)
       and  t.sub_product = '产品等级'
       and ('起始航班号' <= t.end_num and '截止航班号' >= t.start_num)
       and ('生效日期' <= to_char(t.end_date, 'yyyy-MM-dd'))
       and ('截止日期' >= to_char(t.start_date, 'yyyy-MM-dd'))
       and (regexp_substr(t.frequency, '[班期]') > 0)
    union 
       select null,null,null,null,null,null,null,null,null,
        null,null,null,null,null,null,null,null,null,null from dual
       order by rule_id
   )  saleRule )
  where row_id between 起始编号 and 结束编号 
  or row_id is null;

 

posted @ 2018-02-05 10:09  fosonR  阅读(301)  评论(0)    收藏  举报