Очевидно, что приведенный ниже код неверен, но вам придется простить это, поскольку я раньше не делал циклы в SQL.
While (Select oldSysNr, DoW.DoWC, DoW.WorkStart, DoW.WorkEnd, DoW.ContractHours From #TempTable
Join AppData.TSCHEDDOW as DoW
On DoW.ShiftSystemNumber = oldSysNr)
Insert into AppData.TSCHEDDOW
(
#TempTable.newSysNr,
DoWC,
WorkStart,
WorkEnd,
ContractHours
)
Select
#TempTable.newSysNr,
DoWC,
WorkStart,
WorkEnd,
ContractHours
From AppData.TSCHED
End;
Предполагаемый результат состоит в том, что это циклически повторяет oldSysNr в tempTable и, когда это и AppData.TSCHEDDOW SysNr совпадают, тогда он вставляет новые строки в AppData.TSCHED, причем только newSysNr является атрибутом, который изменяется, сохраняя старые строки.
Вот желаемые результаты:
AppData.TSCHEDDOW
SysNr DoWC WorkStart WorkEnd ContractHours
--------------------------------------------------
24 1 12:00 8:00 8
25 2 12:00 8:00 8
26 2 9:00 6:00 8
27 5 7:00 3:00 8
54 1 12:00 8:00 8
55 2 12:00 8:00 8
56 2 9:00 6:00 8
57 5 7:00 3:00 8
Мой вопрос сейчас состоит в том, что я делаю не так с этим циклом, и что я должен делать вместо этого? Буду очень признателен за любую помощь, которую я смогу получить, и ресурсы, на которые можно будет обратиться по этому вопросу.
Вот пример данных:
#TempTable
oldSysNr newSysNr
------------------------
24 54
25 55
26 56
27 57
AppData.TSCHEDDOW
SysNr DoWC WorkStart WorkEnd ContractHours
--------------------------------------------------
24 1 12:00 8:00 8
25 2 12:00 8:00 8
26 2 9:00 6:00 8
27 5 7:00 3:00 8
Информация, из которой заполняется newSysNr, поступает из той же таблицы, что и oldSysNr, это результат создания временной таблицы, в которой само присоединение основано на параметре year, одна из которых - год, который копируется, и год, в котором Вся эта информация будет скопирована. Если что-то еще нужно, чтобы полностью ответить на этот вопрос, пожалуйста, дайте мне знать.