table 中的条件评估和应用行号

Condition evaluation and applying row numbers in a table

我需要指导来解决以下问题。 我正在尝试根据条件给出行号。 这是我的条件:

ROW_NUMBER() OVER (
    PARTITION BY CLAIM_KEY, EXPOSURE_KEY, RESERVELINE_ID, TRANSACTIONSUBTYPE_DESC 
    ORDER BY TRANSACTION_CREATE_TS
)

这是我应用上述条件后的 table。 (我只是在这里举了一个例子来简化事情。)

这是我想要实现的,但到目前为止还没有结果。

您的查询似乎按预期工作。查看您预期的结果集图像,您手动添加蓝色文本“1、2、3、4”的行与前三行属于同一分区:

CLAIM_KEY = 165,529
EXPOSURE_KEY = 158,038
RESERVELINE_ID = 101,692
TRANSACTIONSUBTYPE_DESC = 'Reserve'

这就是 ROW_NUMBER() 继续递增 4,5,6,7 的原因。尝试将 ORDER BY CLAIM_KEY, EXPOSURE_KEY, RESERVELINE_ID, TRANSACTIONSUBTYPE_DESC 添加到完整查询的末尾,这样您就可以更清楚地看到行是如何分区在一起的,以及为什么结果集是这样的。

我认为您需要考虑使用 RESET WHEN 作为 ROW_NUMBER() window 聚合的一部分。 RESET WHEN 可以包含另一个 window 聚合,以允许您回顾 ROW_NUMBER 现有分区范围内的前一行,以检查正在处理的金额或关闭时间戳的情况不为空。

RESET WHEN 的使用在 Teradata 15.10 的 SQL 函数、运算符、表达式和谓词手册的第 22 章中进行了说明。本章标题为有序 Analytical/Windows 聚合函数 - Window 特征。

希望这能帮助您找到正确的方向。