【发布时间】:2016-09-25 11:05:50
【问题描述】:
下面是示例表
id date rating
-----------------------
1 15-11-2015 A
1 18-11-2015 A
1 05-12-2015 B
2 05-11-2015 A
2 21-11-2015 A
2 05-12-2015 A
3 25-11-2015 B
3 05-12-2015 B
.....
现在我的服务正在查询 2015 年 12 月 1 日至 2015 年 12 月 10 日期间 id 1、2、3(数量也可能更多)的评级。如果我进行选择查询以提取此范围内的记录,则只有一条记录是 2015 年 12 月 5 日的记录。
所以在 JAVA 方面,我可以使用它来填充相同的数据,直到 10 月 10 日才适用。但是对于向后填充,我需要为每个 ID 提取先前的记录(在 2015 年 12 月 1 日之前只提取一条记录,在此日期之前可能有 n 条记录),对于所有 ID,这不一定在同一日期。有人可以帮我查询这个吗,或者如果查询根本不可能,那么请使用 SP。
所需的输出如下;对于 2015 年 1 月 12 日至 2015 年 10 月 12 日 id 1,2 之间的评级
1 18-11-2015 A
1 05-12-2015 B
2 21-11-2015 A
2 05-12-2015 A
由于开始日期(2015 年 1 月 12 日)没有评分,我需要为每个 ID 提取之前的评分。
最初尝试如下;如果所有 id 的评分日期都相同,这将起作用,但不幸的是,情况并非如此。
Select *
from ratings rr
where rr.id in (1, 2)
and rr.date between (Select max(rrr.date)
from ratings rrr
where rrr.date <= to_date('01-12-2015','dd-MM-yyyy'))
and to_date('10-12-2015','dd-MM-yyyy')
【问题讨论】:
-
你能发布你需要的结果吗?
-
我已经用所需的输出更新了我的问题。
标签: java oracle hibernate oracle11g