【问题标题】:SQL syntax that will create a flag that lags based on ID and Marker将创建一个基于 ID 和标记滞后的标志的 SQL 语法
【发布时间】:2023-02-21 02:40:41
【问题描述】:

我有一个事件表,其结构类似于所附图像,其中有一个项目的 ID,后跟一个不同事件的标记,一个用于标记内事件数量的序列变量,以及是否事件顺序是标记中的最后一个。

我希望创建另一个标志,基本上指示项目 ID 出现在新标记中,但我很难想出一个好的方法。

想知道是否与 lag() 有关或何时可以使用帮助。

下图有我想要的输出,即 DesiredFlag 变量。

【问题讨论】:

  • 大多数现代 DBMS 都支持 LAG() 窗口函数
  • 那是我的想法,但想知道是否有一种方法可以将 CASE WHEN() 与 LAG() 一起使用,这样标记就不会变成 M​​arker + 1 (这在实际表格中很难分析)一个简单的 1,0。

标签: sql


【解决方案1】:

您可以使用此 SQL 创建标志:

SELECT id, marker,
    CASE 
        WHEN LAG(marker) OVER (PARTITION BY id ORDER BY marker) != marker 
        THEN 1 
        ELSE 0 
    END AS flag
FROM table
ORDER BY id, marker;

【讨论】:

    猜你喜欢
    • 2021-06-06
    • 2018-08-05
    • 2013-02-04
    • 2011-08-25
    • 1970-01-01
    • 2020-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多