SQL Server:使用 CTE 行分区来序列化顺序时间戳

有抱负的开发人员

我想我只需要一点帮助,但是有没有办法使用某种类型的 CTE 行分区来增量计算 SQL 中的步骤?我使用的是 SQL Server 2008,因此无法使用该LAG功能。

在下面,我试图找到一种计算步骤编号的方法,如下图所示,对于我表中的每个唯一 ITEM,在本例中为 G43251,它Step_Number根据日期(时间戳)和过程类型计算过程。对于具有相同时间戳 & 的那些process_type,它会将它们标记为与其他可能导致时间戳重复两次的其他字段相同的 Step_Number。

现在我正在下面玩这个,看看我如何适应DISTINCT时间戳方法?这样它就不会将每一行都算作新的东西。

WITH cte AS
(
    SELECT 
        *, 
        ROW_NUMBER() OVER (ORDER BY Timestamp_Posted DESC) 
            - ROW_NUMBER() OVER (PARTITION BY Item ORDER BY Timestamp_Posted Desc) rn 
    FROM 
        #t1
)
SELECT 
    *, 
    ROW_NUMBER() OVER (PARTITION BY Item, rn ORDER BY Timestamp_Posted DESC) rn2
FROM 
    cte
ORDER BY 
    Timestamp_Posted DESC

在此处输入图片说明

卡兹·穆罕默德·阿里·努尔

请使用dense_rank()代替row_number()

SELECT *, dense_rank() OVER(Partition By Item ORDER BY Timestamp_Posted, Process_Type ) Step_Number
FROM  #t1
ORDER BY Timestamp_Posted DESC

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章