SQL:为多条记录选择下一个可用日期

SQL:为多条记录选择下一个可用日期,sql,oracle,Sql,Oracle,我有一个oracle数据库。 我的表有ID列和日期列等。 我想为每个ID选择特定日期后的下一个可用记录。对于仅一个ID,查询将为: SELECT * FROM my_table WHERE id = 1 AND date >= '01.01.2018' 只是忽略tou_date函数 多个ID的情况如何?我想选择* 谢谢 我们可以在这里使用行号: 这里的想法是为每个ID分区分配一个行号,从您指定的截止日期之后的最早日期开始。每个分区的第一条记录将是下一个日期,假设它存在。更新您的问题添加适

我有一个oracle数据库。 我的表有ID列和日期列等。 我想为每个ID选择特定日期后的下一个可用记录。对于仅一个ID,查询将为:

SELECT * FROM my_table
WHERE id = 1 AND date >= '01.01.2018'
只是忽略tou_date函数

多个ID的情况如何?我想选择*

谢谢

我们可以在这里使用行号:


这里的想法是为每个ID分区分配一个行号,从您指定的截止日期之后的最早日期开始。每个分区的第一条记录将是下一个日期,假设它存在。

更新您的问题添加适当的数据样本和预期结果。您的问题很难理解。是否从Id=1和日期>{x}的表中选择top1*按日期排序说明。你想要达到的目标的开始?@LJ01不能概括为多个ID。@tim对你的答案投了赞成票,因为它确实。。。。单个id可能在不同的情况下帮助其他人,因此不会删除注释
SELECT ID, date  -- and maybe other columns
FROM
(
    SELECT *,
        ROW_NUMBER() OVER (PARTITION BY ID ORDER BY date) rn
    FROM my_table
    WHERE date >= date '2018-01-01'
) t
WHERE rn = 1