У меня есть таблица tblSample
, в которой есть имена столбцов в качестве значения формата даты, т.е. [202007], [202006] --- [202001], а тип данных - varchar
.
Я хочу обновить другой столбец (X) из tblSample
с [202006] - [202005] и столбец (Y) с [202005] - [202004]. Я использую запрос ниже, который дает вывод как 1 для всех записей (около 50 записей в tblSample
).
UPDATE tblSample
SET
X = CAST(ISNULL(SELECT LEFT(CONVERT(varchar, DATEADD(month, -3, GETDATE(), 112), 6)), 0) AS DECIMAL(18,2)) - CAST(ISNULL((SELECT LEFT(CONVERT(varchar, DATEADD(month, -4, GETDATE()), 112), 6)), 0) AS DECIMAL(18, 2))
Я использую LEFT(CONVERT(varchar, DATEADD(month, -3, GETDATE(), 112), 6))
, поскольку значение имени столбца будет обновляться каждый месяц до текущий месяц.
Мне нужно преобразовать varchar в decimal, поскольку я получаю сообщение об ошибке, что вычитание не может быть выполнено для значений varchar.
Где я ошибаюсь и будет ли мой запрос на обновление, обновляет значение столбца X и столбца Y правильно для каждой строки в таблице
Значения в столбцах tblSample [2006] -3565.24, [2005] -3461.36, [2004] -3510.36. Вывод
Спасибо, Шьям