Я хочу выполнить арифметическую операцию, основанную на моих значениях столбца. Рассмотрим следующий примерАрифметика/Логическая операция на основе значения столбца
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, Level 15, State 1, Line 1 Неправильный синтаксис около 'check_value'.
Используйте 'выражение CASE'. Это будет самое простое рассуждать. –
Вы имеете в виду 'SET @sql = 'select cont_sal' + @op + 'check_value from #test'' .. – Deepshikha
@Mini - Каждая строка будет иметь собственный оператор, поэтому мы не сможем использовать переменную –