Я хочу выполнить арифметическую операцию, основанную на моих значениях столбца. Рассмотрим следующий пример
CREATE TABLE #test
(
cont_sal INT,
check_value INT,
operator VARCHAR(50)
)
INSERT #test
VALUES (10,20,'+'),
(20,10,'+'),
(10,20,'-'),
(20,10,'-')
Ожидаемый результат:
cont_sal check_value result
-------- ----------- ------
10 20 30
20 10 30
10 20 -10
20 10 10
Я могу сделать это с помощью оператора CASE
.
SELECT cont_sal,
check_value,
CASE
WHEN operator = '+' THEN cont_sal + check_value
when operator = '-' THEN cont_sal - check_value
END result
FROM #test
Но есть ли способ сделать это динамически. Оператор может быть чем-то вроде /
, %
, *
. Что-то вроде этого
DECLARE @sql NVARCHAR(max)=''
SET @sql = 'select cont_sal ' + 'operator'
+ ' check_value from #test '
--PRINT @sql
EXEC Sp_executesql
@sql
Что явно не работает, говоря
Msg 102, уровень 15, состояние 1, строка 1 Неверный синтаксис рядом 'Check_value'.