我需要指导来解决以下问题。 我试图根据条件给出行号。 这是我的条件:
ROW_NUMBER() OVER (
PARTITION BY CLAIM_KEY, EXPOSURE_KEY, RESERVELINE_ID, TRANSACTIONSUBTYPE_DESC
ORDER BY TRANSACTION_CREATE_TS
)
申请上述条件后,这是我的表格。 (我在这里只提供了一个例子来简化事情。)
这就是我想要实现的目标,但到目前为止还没有结果。
答案 0 :(得分:2)
我认为您需要考虑将RESET WHEN
用作ROW_NUMBER()
窗口聚合的一部分。 RESET WHEN
可以包含另一个窗口聚合,以允许您回顾ROW_NUMBER
现有分区范围中的上一行,以检查金额或关闭时间戳为NOT NULL的条件。
Teradata 15.10的SQL函数,操作符,表达式和谓词手册的第22章介绍了RESET WHEN
的用法。章节标题是Ordered Analytical / Windows Aggregate Functions - Window Feature。
希望这有助于您朝着正确的方向前进。
答案 1 :(得分:0)
您的查询似乎按预期工作。查看预期的结果集图像,以蓝色文本手动添加“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
添加到完整查询的末尾,这样您就可以更清楚地看到行如何分区,以及结果集的原因是什么。