Qualify and Rank :在 Teradata 中过滤有关文本和时间戳的数据

Qualify and Rank : Filtering data on text and timestamp in Teradata

我在 Teradata 中有一个数据集-

ID 名称 TMS
123 AAA 12:00
123 BBB12:01
第 123 话 12:04
123 BBB12:06
第 123 话 12:08
123 电子电气工程 12:55
222 AAA 12:33
222 BBB 12:10

查询应该首先在Name列中找到最后"BBB"的唯一ID,然后显示BBB时间戳30分钟间隔内的每一行。因此,我的显示应该看起来像-

ID 名称 TMS
123 BBB12:06
第 123 话 12:08
第 222 话 12:10
我猜 Qualify 和 Rank 可以解决问题,但不确定。有人吗?

你不需要RANK:

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