我有下表,其中的输出包括sql查询的结果,该查询没有提供我希望看到的输出(我在pyspark中执行此操作,因此sql的配置单元版本是):
下面是我正在运行的查询(我尝试了一系列的变化,包括range/row和不同的前/后unbounded等,但没有一个能提供我想要的输出):
select id, date_1, acct_num, date_2, txn_am,
min(date_1) OVER(PARTITION BY acct_num
ORDER BY date_1 ASC RANGE BETWEEN 2 PRECEDING AND CURRENT ROW) as lower_bound_timestamp
from abc.def
order by acct_num, date_2
这就是我想要输出的样子(在这个查询中,我只是创建一个下界时间戳列)。如果你注意到我想要的关键是下界时间戳不一定是前一行中日期的值,我想要它是日期的前一个值(它是按日期asc排序的),因为如果有5行具有相同的日期,然后有3行具有不同的下一个日期,我希望接下来的3行有一个前一个日期的下界\u时间戳\u 1,但是我的查询我尝试的许多变体都没有实现:
id date_1 acct_num date_2 txn_am lower_bound_timestamp
123 2019-06-26 123 2019-06-10 10 2019-06-26
354 2019-06-26 123 2019-06-15 10 2019-06-26
357 2019-06-28 123 2019-06-15 10 2019-06-26
359 2019-06-30 123 2019-06-17 10 2019-06-28
360 2019-07-05 123 2019-06-18 10 2019-06-30
361 2019-07-05 123 2019-06-20 10 2019-06-30
1条答案
按热度按时间byqmnocz1#
你可以用
range()
,但有数字: