【问题标题】:Oracle: select week of the year according to an input listOracle:根据输入列表选择一年中的星期
【发布时间】:2020-09-23 21:11:48
【问题描述】:

我有两张桌子,看起来像:

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 的 start_date 和 end_date 之间时,只需指定一年中的正确星期。

到目前为止,我尝试了以下方法,因为没有用于在表之间进行可能连接的字段:

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;

但是,查询不接受列表作为输入。有什么想法吗?

谢谢

【问题讨论】:

    标签: oracle date plsql


    【解决方案1】:

    只需加入他们,检查org_date 是否位于ON 子句中的start_dateend_date 之间。

    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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-05
      • 1970-01-01
      • 1970-01-01
      • 2014-05-03
      相关资源
      最近更新 更多