【问题标题】:using row_number() in db2在 db2 中使用 row_number()
【发布时间】:2017-03-30 06:14:52
【问题描述】:

我有以下数据,并且每当出现 userid+customerid 的组合时,我都会尝试计算每条记录。如果相同的组合在其他组合之间返回,我想再次从一个开始计数器。但是,当我在 Db2 的以下代码中使用 row_number() 时,我似乎无法让它工作,因此随着时间的推移出现的每个 userid+customerid 的计数器都在 1 处重新启动。有人有其他建议吗?非常感谢。

select userid, customer, event_name, event_timestamp,     
       row_number() over (partition by user_id, customer_number
                          order by  event_timestamp) as steps_rownum
from trackhist
order by userid, event_timestamp;

【问题讨论】:

    标签: sql db2


    【解决方案1】:
    select userid, customer, event_name, event_timestamp,
           row_number() over (partition by userid, customer, grp
                              order by event_timestamp) as steps
    from
    (
        select t.*,
               (row_number() over (order by event_timestamp) -
                row_number() over (partition by userid, customer order by event_timestamp)
               ) as grp
        from trackhist t
    ) t
    order by userid, event_timestamp
    

    输出:

    演示在这里:

    Rextester

    请注意,该演示使用 SQL Server,因为 DB2 不是 Rextester 的选项(至少目前如此)。但是,假设 ROW_NUMBER() 在两个数据库中的行为相同,该查询应该在 DB2 中工作。

    【讨论】:

    • 非常感谢蒂姆!这有效:D。另外,也感谢您对帖子编辑的建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-27
    • 2020-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-06
    相关资源
    最近更新 更多