加入小于日期并对金额求和(雪花)

Join on smaller than date and sum the amounts (snowflake)

我对客户的购买有异议 table:

CLOSED_DATE OPP_AMOUNT
0 1/4/2022 6600
1 2/17/2022 9125

和费用 table 日期:

CHARGE_DATE
0 2022-01-03 0:00:00
1 2022-01-04 0:00:00
2 2022-03-15 0:00:00
3 2022-03-15 0:00:00
4 2022-04-15 0:00:00
5 2022-04-15 0:00:00

对于每笔费用,我想知道那个时间点的总购买量(以及之前日期的首次购买量):

CHARGE_DATE Target
0 2022-01-03 0:00:00 6600
1 2022-01-04 0:00:00 6600
2 2022-03-15 0:00:00 15725
3 2022-03-15 0:00:00 15725
4 2022-04-15 0:00:00 15725
5 2022-04-15 0:00:00 15725

尝试加入 charge_date<=closed_date 但这会多次带来数字, 有什么想法吗?

一种做法可以如下-

select distinct c.id,charge_date, sum(amount) over (partition by c.id order by c.id) 
as target from charge_date c left outer
join closed_date d on closed_date<=charge_date order by c.id;


+----+-------------------------+--------+
| ID | CHARGE_DATE             | TARGET |
|----+-------------------------+--------|
|  0 | 2022-01-03 00:00:00.000 |   NULL |
|  1 | 2022-01-04 00:00:00.000 |   6600 |
|  2 | 2022-03-15 00:00:00.000 |  15725 |
|  3 | 2022-03-15 00:00:00.000 |  15725 |
|  4 | 2022-04-15 00:00:00.000 |  15725 |
|  5 | 2022-04-15 00:00:00.000 |  15725 |
+----+-------------------------+--------+