我有2張桌子。
表1:
| 日期。 |
|---|
| 2021-09-30 |
| 2021-10-01 |
| 2021-10-02 |
| 2021-10-04 |
| 2021-11-15 |
桶:
| 桶日期 |
|---|
| 2021-10-01。 |
| 2021-10-02。 |
| 2021-10-03。 |
| 2021-11-03。 |
我想加入這兩個表以獲得如下最終結果。(如果有匹配的日期,那么它將匹配,如果沒有匹配的日期,那么它應該從 tab1 表中讀取下一個最高日期。例如 2021-10-03 和 2021-11-03 日期)。
結果表:
| 桶日期 | 最終日期 |
|---|---|
| 2021-10-01。 | 2021-10-01 |
| 2021-10-02。 | 2021-10-02 |
| 2021-10-03。 | 2021-10-04 |
| 2021-11-03。 | 2021-11-15 |
我試圖通過使用連接查詢來做到這一點
select a.bucket_dates,
case when b.dates is null then (select min(c.dates) from tab1 c where c.dates > a.bucket_dates)
else b.dates end as final_dates
from buckets a left join tab1 b
on a.bucket_dates = b.dates;
但是這個查詢給出了以下錯誤
Correlated column is not allowed in a non-equality predicate
任何建議都會非常有幫助。
uj5u.com熱心網友回復:
如果 pyspark 不允許>或>=在相關的子查詢中,只需MIN()在主查詢中使用...
SELECT
b.bucket_dates,
MIN(t.dates) AS final_dates
FROM
buckets AS b
LEFT JOIN
tab1 AS t
ON t.dates >= b.bucket_dates
GROUP BY
b.bucket_dates
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/381360.html
上一篇:當我應用過濾器查詢不起作用時,如何知道Where子句是否已經存在(如果存在),那么接下來用AND替換where嗎?
