如何根据SQL Server

时间:2015-06-26 20:28:42

标签: sql 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

谢谢

1 个答案:

答案 0 :(得分:0)

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