条件评估和在表中应用行号

时间:2017-12-13 23:19:37

标签: sql tsql teradata row-number

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

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

申请上述条件后,这是我的表格。 (我在这里只提供了一个例子来简化事情。)

enter image description here

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

enter image description here

2 个答案:

答案 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添加到完整查询的末尾,这样您就可以更清楚地看到行如何分区,以及结果集的原因是什么。