Цикл Sql server через каждую запись и редактирование
Как написать SQL-код, эквивалентный коду vba (ниже). Заранее спасибо за любую помощь в этом вопросе. Я не очень много занимался кодированием SQL.
Я написал этот код в MS Access для редактирования записей в одной таблице. Два набора записей используются для проверки наличия изменений в значениях J_CaseNum или J_Index.
Для каждой комбинации J_PersonIndex должен быть увеличен, начиная с 1. Там может быть от 1 до 70 человек для данной комбинации, 160 000 записей в таблице.
После запуска кода результаты должны выглядеть следующим образом:
CaseNum Index Name PersonIndex 1001 001 Allen 01 1001 001 Brown 02 1001 001 Smith 03 1001 002 Alfred 01 1002 001 Billy 01 1002 001 Lima 02
Вот код VBA
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 rs.MoveFirst i = 0 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 Wend
Что я уже пробовал:
Код VBA работает нормально, потребовалось 7 часов, чтобы закончить.