表AA
table AA
ID Date
1 2018.01.21
2 2018.01.22
2 2018.05.27
2 2018.07.15
table BB
ID Date
1 2017.05.21
1 2017.08.27
1 2018.01.23
1 2018.02.15
2 2017.01.01
2 2017.05.31
2 2018.01.01
2 2018.01.25
2 2018.05.29
2 2018.09.30
我想在ID列上加入这些表。目的是在表B中查找每个ID和日期(在表A中每行)的日期等于或晚于表A中的最小日期的日期。
我的意思是输出应该是
OUTPUT
1 2018.01.23
2 2018.01.25
2 2018.05.29
2 2018.09.30
预先感谢
答案 0 :(得分:5)
您可以尝试一下。
您只需要在select
中编写一个子查询,并从MIN
表中获得BB
的日期。
CREATE TABLE AA(
ID INT,
"DATE" DATE
);
INSERT INTO AA VALUES(1,to_date('2018-01-21','yyyy-MM-dd'));
INSERT INTO AA VALUES(2,to_date('2018-01-22','yyyy-MM-dd'));
INSERT INTO AA VALUES(2,to_date('2018-05-27','yyyy-MM-dd'));
INSERT INTO AA VALUES(2,to_date('2018-07-15','yyyy-MM-dd'));
CREATE TABLE BB(
ID INT,
"DATE" DATE
);
INSERT INTO BB VALUES(1,to_date('2017-05-21','yyyy-MM-dd'));
INSERT INTO BB VALUES(1,to_date('2017-08-27','yyyy-MM-dd'));
INSERT INTO BB VALUES(1,to_date('2018-01-23','yyyy-MM-dd'));
INSERT INTO BB VALUES(1,to_date('2018-02-15','yyyy-MM-dd'));
INSERT INTO BB VALUES(2,to_date('2017-01-01','yyyy-MM-dd'));
INSERT INTO BB VALUES(2,to_date('2017-05-31','yyyy-MM-dd'));
INSERT INTO BB VALUES(2,to_date('2018-01-01','yyyy-MM-dd'));
INSERT INTO BB VALUES(2,to_date('2018-01-25','yyyy-MM-dd'));
INSERT INTO BB VALUES(2,to_date('2018-05-29','yyyy-MM-dd'));
INSERT INTO BB VALUES(2,to_date('2018-07-31','yyyy-MM-dd'));
INSERT INTO BB VALUES(2,to_date('2018-09-30','yyyy-MM-dd'));
查询1 :
SELECT a1.Id,(
SELECT MIN(b1."DATE")
FROM BB b1
where a1.ID = b1.ID and b1."DATE" >= a1."DATE"
) "Date"
FROM AA a1
Results :
| ID | Date |
|----|----------------------|
| 1 | 2018-01-23T00:00:00Z |
| 2 | 2018-01-25T00:00:00Z |
| 2 | 2018-05-29T00:00:00Z |
| 2 | 2018-07-31T00:00:00Z |