पर आधारित है, मैं अपने कॉलम मानों के आधार पर अंकगणितीय ऑपरेशन करना चाहता हूं। निम्नलिखित उदाहरण पर विचारअंकगणित/लॉजिकल ऑपरेशन कॉलम मान
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
की तरह जो कुछ स्पष्ट रूप से
कह संदेश 102 काम नहीं किया, स्तर 15, राज्य 1, के पास पंक्ति 1 गलत वाक्य रचना 'check_value'।
'CASE' अभिव्यक्ति का प्रयोग करें। इसके बारे में कारण सबसे आसान होगा। –
आपका मतलब है 'SET @sql =' cont contsal '+ @op + #test से' check_value '' – Deepshikha
@ मिनी - प्रत्येक पंक्ति में इसका अपना ऑपरेटर होगा, इसलिए हम चर –