sql查询中所需的日期行数

时间:2015-08-31 19:42:55

标签: sql oracle

在我的选择查询中,我需要使用行数或其他任何东西来使用日期数据。

Ex:数据:2015年8月31日:100条记录                 2015年8月30日:100条记录。

但是我在单个查询中只需要10个日期记录

            31-Aug-2015 :10 records
            30-Aug-2015 : 10 records.

1 个答案:

答案 0 :(得分:0)

缺少相当多的细节,但听起来您需要按日期使用row_number()分析函数分区,以便您可以为每个日期分配行号。然后,您可以轻松过滤分配的行号小于或等于10的查询。

假设你有一个像这样定义的表:

create table some_table (
  id number(10) not null primary key,
  some_date date not null
)

您的查询可能如下所示:

select id, some_date
  from (select id,
               some_date,
               row_number() over (partition by trunc(some_date) order by null) as rn
          from some_table
         where some_date >= date '2015-08-30'
           and some_date <  date '2015-09-01')
where rn <= 10

SQLFiddle Demo

有几点需要注意:

  • 如果您的日期字段没有可变时间组件,那么您只需partition by some_date,而无需trunc()函数调用。
  • 由于您还没有为每个日期指定哪些 10行,您会注意到我使用了order by null。如果您确定需要10个特定行,则必须为此调整order by子句。