我需要找到service.service_id
,service.name
和service.date_begin
每一行中bonus
表最接近service.date_begin
和service.date_begin <= bonus.date_begin
。如果有多於一個service
與這樣的date_begin
,返回任何service
(例如與最大service.service_id
或service.rowid
)。如果沒有這樣的service
,請返回NULL
。查找排在相關表格與最接近的日期
例
bonus
表(bonus_id
是PK):
bonus_id date_begin
--------------------
1 2010-04-12
2 2010-04-20
service
表(service_id
被PK):
bonus_id service_id name date_begin
--------------------------------------
1 1 'a' 2010-04-10
1 2 'b' 2010-04-11
1 3 'c' 2010-04-11
1 4 'd' 2010-04-15
2 5 'e' 2010-04-22
希望的輸出:
bonus_id bonus_date_begin service_id service_name service_date_begin
------------------------------------------------------------------------
1 2010-04-12 3 'c' 2010-04-11
2 2010-04-20 NULL NULL NULL
數據庫:Oracle 11.2
人口腳本:
create table bonus (
bonus_id number primary key,
date_begin date
);
create table service (
bonus_id number references bonus(bonus_id),
service_id number primary key,
name varchar2(1),
date_begin date
);
insert into bonus values (1, date '2010-04-12');
insert into bonus values (2, date '2010-04-20');
insert into service values (1, 1, 'a', date '2010-04-10');
insert into service values (1, 2, 'b', date '2010-04-11');
insert into service values (1, 3, 'c', date '2010-04-11');
insert into service values (1, 4, 'd', date '2010-04-15');
insert into service values (2, 5, 'e', date '2010-04-22');
commit;
是列的service_id和在採樣數據bonus_id翻轉? –
@vkp謝謝!編輯。 – avd