如何根据 SQL Server 中的前一行值设置数据库标志



我正在尝试使用交替的 1 和 0 组合对 SQL Server 表中的记录进行分组。

实际上试图在上一行具有相同的日期值时获得 1,如果不是这样我就会得到备用值,则为 0。

我知道我可以使用 SQL Server 2012 中的 LAG 函数来做到这一点。有人可以帮助我在SQL Server 2008中使用最简单的方法吗?

这是我正在尝试做的:

SELECT 
    EMPLOYEE_ID, 
    CASE 
       WHEN LAG(MODIFIED_ON) OVER (ORDER BY MODIFIED_ON) = MODIFIED_ON 
       THEN 1 
       ELSE 0 
    END AS COMPAREDVALUE 
FROM TBL_A

谢谢

根据您所描述的内容,如果您按 mod 日期对记录进行分区,则给定记录集中的第一条记录将具有0(因为前一个分区具有不同的日期(,其余的将具有1 .所以你所要做的就是按mod日期对它们进行分区,然后标记第一个:

SELECT 
    EMPLOYEE_ID,
    CASE
        WHEN ROW_NUMBER() OVER (
            PARTITION BY MODIFIED_ON ORDER BY EMPLOYEE_ID
        ) = 1 THEN 0 ELSE 1 END [COMPAREDVALUE]
FROM TBL_A

最新更新