我在Teradata中有一个数据集 -
ID NAME TMS
123 AAA 12:00
123 BBB 12:01
123 CCC 12:04
123 BBB 12:06
123 DDD 12:08
123 EEE 12:55
222 AAA 12:33
222 BBB 12:10
查询应首先在“名称”列中找到唯一ID的最后一个“BBB”,然后显示此后的每一行,即BBB时间戳的30分钟间隔。因此,我的显示器看起来像 -
ID NAME TMS
123 BBB 12:06
123 DDD 12:08
222 BBB 12:10
我猜测Qualify和Rank可以做到这一点,但不确定。任何人吗?
答案 0 :(得分:1)
您不需要SELECT * FROM tab
QUALIFY TMS BETWEEN MAX(CASE WHEN NAME = 'BBB' THEN TMS end) OVER (PARTITION BY ID)
AND MAX(CASE WHEN NAME = 'BBB' THEN TMS end) OVER (PARTITION BY ID) + INTERVAL '30' MINUTE
:
{{1}}