Я пытаюсь преобразовать данные из существующей таблицы во временную таблицу и перебрать строки для обновления данных существующей таблицы.
Мне нужно сократить столбец DeviceName и привестикак INT для извлечения идентификаторов DevicesID, которые потребуются для обновления существующей таблицы. Первая таблица показывает пример неформатированного DeviceName. Вторая таблица показывает пример форматированного DeviceName (DeviceIntModified). Затем мне нужно получить эти DevicesID, чтобы я мог использовать их для обновления существующей таблицы.
Моя исходная таблица tblDevices
:
----------------------------------------------------
DeviceName | DevicesID | StationID
----------------------------------------------------
MainStation-464 | 1163 | 14
MainStation-465 | 1164 | 14
MainStation-466 | 1165 | 14
MainStation-467 | 1166 | 14
----------------------------------------------------
WITH tempTable as
(
SELECT
DevicesID,
RIGHT(DeviceName, LEN(DeviceName) - 12) AS DeviceNameModidfied
FROM
tblDevices
where
StationID = 14
)
select
CAST (DeviceNameModidfied as int) as DeviceIntModified,
DevicesID
from
tempTable
where
DeviceNameModidfied > 464
AND DeviceNameModidfied < 467
Это прекрасно работает иприводит к следующему недавно созданному tempTable
:
----------------------------------
DeviceIntModified | DevicesID
----------------------------------
465 | 1164
466 | 1165
----------------------------------
У меня проблемы с выбором данных из этой таблицы и циклическим просмотром данных.
DECLARE @RowCount INT WITH tempTable as
(
SELECT
DevicesID,
RIGHT(DeviceName, LEN(DeviceName) - 9) AS DeviceNameModidfied
FROM
tblDevices
where
StationID = 14
)
select
CAST (DeviceNameModidfied as int) as DeviceIntModified,
DevicesID
from
tempTable
where
DeviceNameModidfied > 464
AND DeviceNameModidfied < 500
SET
@RowCount =
(
SELECT
COUNT(DevicesID)
from
tempTable
)
DECLARE @I INT
SET
@I = 1 WHILE (@I <= @RowCount)
BEGIN
DECLARE @rowID INT
--I'm getting invalid column/object name when trying to select from tempTable here
SELECT
@rowID = DevicesID
from
tempTable
UPDATE
anotherTable
SET CheckBox = 'T'
WHERE
DevicesID = @rowID
SET
@I = @I + 1
END
Результаты должны выглядеть примерно так: anotherTable
:
----------------------------------
CheckBox | DevicesID
----------------------------------
T | 1164
T | 1165
----------------------------------