更新SQL Select语句中每一行的变量

时间:2019-04-10 05:52:58

标签: sql-server-2012

我正在尝试根据不等于1000的最新代码更新一列,如果存在重复的1000个代码,则它们都应更改为不等于1000的最新代码。

在SQL Server 2012中,我尝试了lag语句,创建行ID并加入到相同的表-1行,两者均起作用,但问题是重复的。连续可以有1000个代码,但是我需要保留时间戳并将它们全部更改为不等于1000的最新代码。

SELECT
    EqmtID
    ,Reason
    ,StartTime

FROM cyclesRID

产生:

EqmtID                 Reason  StartTime
1903010010000030808    1007    23759
1903010010000030808    1005    24965
1903010010000030808    1000    25382
1903010010000030808    1000    26078
1903010010000030808    1000    27180
1903010010000030808    1000    27761
1903010010000025572    1004    8601

我需要编辑select语句以产生:

EqmtID                 Reason  StartTime
1903010010000030808    1007    23759
1903010010000030808    1005    24965
1903010010000030808    1005    25382
1903010010000030808    1005    26078
1903010010000030808    1005    27180
1903010010000030808    1005    27761
1903010010000025572    1004    8601

也按EqmtID进行分区,如果分区的第一行有1000个代码,则应更改为1001。

如果我在Python中执行此操作,我将使用仅在不等于1000时才更新的变量。在SQL中可以执行类似的操作吗?

1 个答案:

答案 0 :(得分:0)

一种选择是使用相关子查询来查找最接近的非s.cache[id][2] 1000代码用于更新:

Reason

enter image description here

Demo