问题描述
我有两个看起来像的桌子:
Table A:
ORG_DATE
03/04/2018
02/10/2019
17/12/2018
Table B:
Start_date End_Date Week_of_Yr
01/04/2018 08/04/2018 2018041
01/10/2019 08/10/2019 2019101
14/12/2018 21/12/2018 2018123
目标是创建一个如下表:
ORG_DATE Week_of_Yr
03/04/2018 2018041
02/10/2019 2019101
17/12/2018 2018123
当表A中的字段ORG_DATE介于表B的开始日期和结束日期之间时,只需分配一年中的正确星期。
到目前为止,我尝试了以下操作,因为在表之间没有用于进行可能的联接的字段:
SELECT
Week_of_Yr
FROM TABLE B
WHERE TO_DATE((SELECT
TO_CHAR(A11.ORG_DATE,'DD/MM/YYYY') ORG_DATE
FROM TABLE_A A11
GROUP BY A11.ORG_DATE),'DD/MM/YYYY') BETWEEN Start_date AND End_Date;
但是,查询不接受列表作为输入。有什么想法吗?
谢谢
解决方法
只需加入他们,检查org_date
子句中的start_date
是否在end_date
和ON
之间。
SELECT a.org_date,b.week_of_yr
FROM a
LEFT JOIN b
ON b.start_date <= a.org_date
AND b.end_date > a.org_date;