代码之家  ›  专栏  ›  技术社区  ›  user2040021

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

  •  1
  • user2040021  · 技术社区  · 7 年前

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

    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 回复  |  直到 7 年前
        1
  •  2
  •   Rob Paller    7 年前

    我认为您需要考虑使用 RESET WHEN 作为您的 ROW_NUMBER() 窗口聚合。 重置时间 可以包含另一个窗口聚合,以允许您查看的现有分区范围内的前一行 ROW_NUMBER 检查金额或关闭时间戳是否不为空。

    使用 重置时间 Teradata 15.10的SQL函数、运算符、表达式和谓词手册第22章对此进行了解释。章节标题为有序分析/Windows聚合函数-窗口功能。

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

        2
  •  0
  •   ravioli    7 年前

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

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

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