首页 > 解决方案 > 窗口函数中的 IIF 或大小写

问题描述

我在表中有一些时间戳,我想创建一个虚拟变量(0 或 1),在对时间戳进行排序后测试上面的行是否等于当前行。我需要在不同的分区中执行此操作。SQL Server 中是否有可以执行此操作的窗口函数?

所以我知道我的按列分区和按列排序。根据我对窗口函数的了解,我可能需要使用 rank 函数,但是有没有办法用嵌套函数编写它,使用IIFandLEADLAG检查分区中的行之间的某些条件?

标签: sqlsql-servertsql

解决方案


SQL 表表示无序集。如果您有一个与时间戳分开的排序列,您可以使用:

select t.*,
       (case when lag(timestamp) over (partition by <partition col> order by <order col>) = timestamp
             then 1 else 0
        end) as flag   
from t;

推荐阅读