SQL - 如何为给定范围内的每个日期选择最新的可用记录

jfmhbfrost

我在数据库中有一个表 (DATA_RECORDS),其中包含同一日期的多条记录,但时间不同,运行时间为 2015-2018 年。我想要做的是选择给定日期范围内的所有记录,然后选择每个日期可用的最新记录。我在 SQL 中的当前代码是:

SELECT NAME, DATE_LOADED, R_ID 
    FROM DATA_RECORDS 
    WHERE ((DATE_LOADED>=to_date('01/12/2018 00:00:00', 'dd/mm/yyyy HH24:MI:SS'))
    AND (DATE_LOADED<=to_date('31/12/2018 23:59:59', 'dd/mm/yyyy HH24:MI:SS')))
    ORDER BY DATE_LOADED DESC;

其中列名是“NAME”、“DATE_LOADED”和“R_ID”。以上给出了以下结果:

NAME      |DATE_LOADED         |R_ID
-------------------------------------
RECORD_1  |31/12/2018 17:36:38 |1234
RECORD_2  |31/12/2018 10:15:11 |1235
RECORD_3  |30/12/2018 16:45:23 |1236
RECORD_4  |30/12/2018 09:06:54 |1237
RECORD_5  |30/12/2018 07:53:30 |1238

等等...如您所见,每天的上传数量也不一致。

我想要的是选择

NAME      |DATE_LOADED         |R_ID
-------------------------------------
RECORD_1  |31/12/2018 17:36:38 |1234
RECORD_3  |30/12/2018 16:45:23 |1236

我对 SQL 很陌生,所以任何帮助将不胜感激。

注意:我正在使用 Oracle SQL Developer 并且我只有对数据库的只读访问权限,因此我无法创建任何新表或修改当前表。

戈登·利诺夫

我会把这个逻辑写成:

SELECT NAME, DATE_LOADED, R_ID 
FROM DATA_RECORDS 
WHERE DATE_LOADED >= DATE '2018-01-12' AND
      DATE_LODED < DATE '2018-12-31'
ORDER BY DATE_LOADED DESC;

然后一个简单的方法是ROW_NUMBER()- 以及仅从日期/时间值中提取日期:

SELECT NAME, DATE_LOADED, R_ID
FROM (SELECT NAME, DATE_LOADED, R_ID ,
             ROW_NUMBER() OVER (PARTITION BY TRUNC(DATE_LOADED) ORDER BY DATE_LOADED DESC) as seqnum
      FROM DATA_RECORDS 
      WHERE DATE_LOADED >= DATE '2018-01-12' AND
            DATE_LODED < DATE '2018-12-31'
     ) dr
WHERE seqnum = 1
ORDER BY DATE_LOADED DESC;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL:查找具有给定日期范围内每个月的数据的记录

来自分类Dev

SQL选择范围内的日期

来自分类Dev

SQL:查找具有给定日期范围内每月数据的记录

来自分类Dev

SQL选择日期范围内未包含日期的记录

来自分类Dev

Access SQL-在每个记录中仅包含开始的日期范围内进行分配

来自分类Dev

Access SQL-在每个记录中仅包含开始的日期范围内进行分配

来自分类Dev

SQL-按每个记录的最新日期选择记录

来自分类Dev

SQL查询以从表中选择在日期范围内仍具有可用容量的所有房间

来自分类Dev

SQL查询以从表中选择在日期范围内仍具有可用容量的所有房间

来自分类Dev

SQL 速度:返回日期范围内的每个日期和每个日期的 count()

来自分类Dev

SQL显示日期范围内30天内的最接近可用日期

来自分类Dev

如何在日期范围内过滤SQL Server中的特定记录而不删除其他记录?

来自分类Dev

SQL-获取日期范围内的记录,包括 当天记录

来自分类Dev

SQL 检索每个 ID 的最新记录(日期)?

来自分类Dev

SQL在日期范围内的分割数

来自分类Dev

SQL Server在日期范围内的聚合

来自分类Dev

SQL:在给定日期范围内重复模式

来自分类Dev

PL / SQL函数可计算给定日期范围内的平均每月

来自分类Dev

SQL Server-查找给定日期范围内的活跃客户

来自分类Dev

SQL Where子句在联接表日期的30天时间范围内返回记录

来自分类Dev

SQL Where子句在联接表日期的30天时间范围内返回记录

来自分类Dev

sql查询以检查给定范围内的数据和给定范围内的数据

来自分类Dev

在特定日期范围内的Python代码中的SQL选择查询

来自分类Dev

sql查询,其中当年的最新日期与当前日期之间的差在联接时的范围内

来自分类Dev

Spark SQL-如何对链接到特定日期的日期范围内的值求和

来自分类Dev

SQL-计算状态在日期范围内保留的日期

来自分类Dev

SQL选择最新记录

来自分类Dev

SQL查询,用于查找某个日期范围内某个特定日期存在的所有记录

来自分类Dev

SQL:如何为每个客户选择首个日期和最后日期?

Related 相关文章

  1. 1

    SQL:查找具有给定日期范围内每个月的数据的记录

  2. 2

    SQL选择范围内的日期

  3. 3

    SQL:查找具有给定日期范围内每月数据的记录

  4. 4

    SQL选择日期范围内未包含日期的记录

  5. 5

    Access SQL-在每个记录中仅包含开始的日期范围内进行分配

  6. 6

    Access SQL-在每个记录中仅包含开始的日期范围内进行分配

  7. 7

    SQL-按每个记录的最新日期选择记录

  8. 8

    SQL查询以从表中选择在日期范围内仍具有可用容量的所有房间

  9. 9

    SQL查询以从表中选择在日期范围内仍具有可用容量的所有房间

  10. 10

    SQL 速度:返回日期范围内的每个日期和每个日期的 count()

  11. 11

    SQL显示日期范围内30天内的最接近可用日期

  12. 12

    如何在日期范围内过滤SQL Server中的特定记录而不删除其他记录?

  13. 13

    SQL-获取日期范围内的记录,包括 当天记录

  14. 14

    SQL 检索每个 ID 的最新记录(日期)?

  15. 15

    SQL在日期范围内的分割数

  16. 16

    SQL Server在日期范围内的聚合

  17. 17

    SQL:在给定日期范围内重复模式

  18. 18

    PL / SQL函数可计算给定日期范围内的平均每月

  19. 19

    SQL Server-查找给定日期范围内的活跃客户

  20. 20

    SQL Where子句在联接表日期的30天时间范围内返回记录

  21. 21

    SQL Where子句在联接表日期的30天时间范围内返回记录

  22. 22

    sql查询以检查给定范围内的数据和给定范围内的数据

  23. 23

    在特定日期范围内的Python代码中的SQL选择查询

  24. 24

    sql查询,其中当年的最新日期与当前日期之间的差在联接时的范围内

  25. 25

    Spark SQL-如何对链接到特定日期的日期范围内的值求和

  26. 26

    SQL-计算状态在日期范围内保留的日期

  27. 27

    SQL选择最新记录

  28. 28

    SQL查询,用于查找某个日期范围内某个特定日期存在的所有记录

  29. 29

    SQL:如何为每个客户选择首个日期和最后日期?

热门标签

归档