【发布时间】:2021-08-18 18:39:51
【问题描述】:
我有一个日历表
| c_date |
|---|
| 2020-01-01 |
| 2020-01-02 |
| 2020-01-03 |
| 2020-01-04 |
| ..... |
| 2020-12-31 |
我有主表
| Value | col_A | col_B | col_C | col_Date (yyyy-mm-dd) |
|---|---|---|---|---|
| 1 | A | B | C | 2020-12-01 |
| 2 | X | Y | Z | 2020-04-02 |
| 3 | X | Y | Z | 2020-04-03 |
我希望输出作为日期在第二个表中从 col_Date 开始的日历天重复,并重复到下一个 MAX 日期
输出应该是:
| col_A | col_B | col_C | c_Date | value |
|---|---|---|---|---|
| A | B | C | 2020-12-01 | 1 |
| A | B | C | 2020-12-02 | 1 |
| .. | .. | .. | 2020-04-02 | 1 |
| X | Y | Z | 2020-04-03 | 3 |
| ... | ... | ... | ... | 3 |
| X | Y | Z | 2020-12-31 | 3 |
说明:第一条记录应该重复到 2020-04-02。(因为有 1 个数据)。但是下一条记录应该继续重复到年底,并且应该从那个月的 MAX 日期开始。
我尝试了什么:相关查询,在 SQL Server 中有效,但在 SparkSQL (Databricks) 中无效
select A, B, C, c_date FROM calendar_table x
inner join main_table m on x.col_date = (select max(c_date) from main_table h
where h.A = m.A and h.B = m.b and h.C = m.C and h.c_date <= x.col_date )
where 1=1
不在 SparkSQL 中工作。不需要使用 Co-relation 注意:它应该只从那个月的 MAX 开始。请帮忙重写查询。
【问题讨论】:
标签: sql apache-spark-sql