Ich möchte arithmetische Operation basierend auf meinen Spaltenwerten durchführen. Betrachten Sie das folgende BeispielArithmetische/logische Operation basiert auf Spaltenwert
CREATE TABLE #test
(
cont_sal INT,
check_value INT,
operator VARCHAR(50)
)
INSERT #test
VALUES (10,20,'+'),
(20,10,'+'),
(10,20,'-'),
(20,10,'-')
Erwartetes Ergebnis:
cont_sal check_value result
-------- ----------- ------
10 20 30
20 10 30
10 20 -10
20 10 10
ich dies mit CASE
Aussage machen kann.
SELECT cont_sal,
check_value,
CASE
WHEN operator = '+' THEN cont_sal + check_value
when operator = '-' THEN cont_sal - check_value
END result
FROM #test
Aber gibt es eine Möglichkeit, dies dynamisch zu tun. Betreiber kann alles wie /
, %
, *
sein. So etwas wie dies
DECLARE @sql NVARCHAR(max)=''
SET @sql = 'select cont_sal ' + 'operator'
+ ' check_value from #test '
--PRINT @sql
EXEC Sp_executesql
@sql
die offensichtlich nicht
Msg 102, Ebene 15, Status 1, Zeile 1 Falsche Syntax in der Nähe von 'check_value' sagen funktionierten.
Mit dem 'CASE' Ausdruck. Es wird am einfachsten sein, darüber nachzudenken. –
Sie meinen 'SET @sql = 'wählen cont_sal' + @op + 'check_value von #test'' .. – Deepshikha
@Mini - Jede Zeile wird einen eigenen Operator haben, so dass wir keine Variable verwenden können –