SQL 服务器脚本循环遍历每条记录并更新它

SQL Server script loops through each record and updates it

如何在 T-SQL 中编写等效的 SQL 脚本?

我已经在 MS Access 中编写了这段代码来编辑记录 - 我怎样才能在 SQL 服务器中做同样的事情?

对于 J_CaseNumJ_Index J_PersonIndex 的每个组合都需要递增。给定组合可以有 1 到 50 人。

Dim rs As Recordset
Dim rs1 As Recordset
Dim i As Long
Dim s As String

sql = "Select J_CaseNum, J_Index, J_VehicleIndex, J_PersonIndex, J_CaseNo, J_PersonID, Ind_Last_NM  from dbo_DCIPS Order By J_CaseNum, J_Index, Ind_Last_NM"
Set rs = CurrentDb.OpenRecordset(sql)
Set rs1 = CurrentDb.OpenRecordset(sql)

rs.MoveLast
cnt = rs.RecordCount
rs.MoveFirst
i = 0

SysCmd acSysCmdInitMeter, "_", cnt

While Not rs.EOF
    If i = 0 Then
        rs.Edit
        rs!J_PersonIndex = "01"
        rs!J_CaseNo = rs!J_CaseNum & rs!J_Index
        rs!J_PersonID = rs!J_CaseNo & rs!J_VehicleIndex & rs!J_PersonIndex
        rs.Update
        j = 1
        i = 1
        rs.MoveNext
    Else
        If (rs1!J_CaseNum = rs!J_CaseNum) And (rs1!J_Index = rs!J_Index) Then
            j = j + 1
            s = j
            rs.Edit
            rs!J_PersonIndex = Right("00" + s, 2)
            rs!J_CaseNo = rs!J_CaseNum & rs!J_Index
            rs!J_PersonID = rs!J_CaseNo & rs!J_VehicleIndex & rs!J_PersonIndex
            rs.Update
            rs.MoveNext
            rs1.MoveNext
        Else
            j = 1
            s = j
            rs.Edit
            rs!J_PersonIndex = Right("00" + s, 2)
            rs!J_CaseNo = rs!J_CaseNum & rs!J_Index
            rs!J_PersonID = rs!J_CaseNo & rs!J_VehicleIndex & rs!J_PersonIndex
            rs.Update
            rs.MoveNext
            rs1.MoveNext
        End If
    End If

    i = i + 1
    SysCmd acSysCmdUpdateMeter, i

    If (i Mod 1000) = 0 Then Stop
Wend

提前致谢

好的,所以你想要在每组 case/index/person 中有一个计数器。我会做这样的事情来获得一个独特的人 id。

    SELECT ROW_NUMBER() OVER (partition BY caseNum,[index] order by [index])      
    AS personId , caseNum, [index], personName FROM table 

然后您可以使用此数据集插入到新的 table 或更新现有的 table 从此查询(这是修改后的命令)