Oracle SQL.....我有一条来自表1的记录:
PURCHASE_DATE
1/10/2023
在表2中,我有一个日期范围:
REQUIRED_DATE
1/5/2023
1/8/2023
1/11/2023
我想做一个加入到TABLE 2所需的日期之前购买日期。在这种情况下,我会得到TABLE 2记录1/5/2023和1/8/2023。我可以很容易地做到这一点:
PURCHASE_DATE >=我的联接子句上的REQUIRED_DATE。我只想在2023年1月8日回归。
在我的主查询中,当我执行MAX(REQUIRED_DATE)时,我仍然得到1/5/2023和1/8/2023
SELECT
TABLE1.BUYER
, TABLE1.PURCHASE_ORDER
, TABLE1.PURCHASE_DATE
, TABLE2.REQUESTED_DATE
, MAX(TABLE2.REQUIRED_DATE) REQUIRED_DATE
FROM TABLE1
LEFT JOIN
TABLE2
ON TABLE1.PURCHASE_DATE >= TABLE2.REQUIRED_DATE
GROUP BY
TABLE1.BUYER
, TABLE1.PURCHASE_ORDER
, TABLE1.PURCHASE_DATE
, TABLE2.REQUESTED_DATE
2条答案
按热度按时间4jb9z9bj1#
您正在寻找横向连接(
CROSS APPLY
或OUTER APPLY
)。因为你有一个外部连接,你可能需要一个OUTER APPLY
。6pp0gazn2#
您可以执行以下操作: