繁体   English   中英

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

[英]How to set a DB Flag depending on previous row value in 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

谢谢

根据您的描述,如果按记录日期对记录进行分区,则给定记录集中的第一条记录将为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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM