मेरे पास एक कॉलम वाला एक टेबल है जिसमें अल्पविराम से अलग संख्याएं हैं। मैं प्रत्येक रिकॉर्ड के लिए सभी नंबरों को एक साथ जोड़ना चाहता हूं। spexecuteSQL का उपयोग करके मुझे यह अब तक मिल गया है, लेकिन यह अभी भी क्षेत्र का मूल्यांकन नहीं कर रहा है। मैं यह कैसे करु?
उदा. फ़ील्ड '4,5,5' है जिसे 4+5+5 में स्थानांतरित किया जाता है लेकिन मूल्यांकन करना और ---> 14 प्राप्त करना चाहते हैं
declare @com as nvarchar(100)
set @com= 'select replace(class_historyTY,'','',''+'') from #aety1'
exec sp_executesql @com
2 जवाब
यदि आपके पास SQL सर्वर 2016 है, तो निम्नलिखित कार्य करना चाहिए:
select name, sum(cast(t.value as int)) from
(select name, cs.Value
from details
cross apply STRING_SPLIT (name, ',') cs) t
group by name
जहां मेरी तालिका दिखती है:
details
---------------
name
--------------
1,2,3,4
---------------
10,20,30
नतीजा:
name |
1,2,3,4 | 10
10,20,30 | 60
जैसा कि जोसेफ द्वारा सुझाया गया क्रॉस आवेदन ऐसा करने का सही तरीका है, आपने sp_executesql
के साथ एक समाधान निकाला है:
Declare @s nvarchar(max) = 'select '
+ (select replace(class_historyTY,',','+') from #aety1)
exec sp_executesql @s
यहाँ विचार यह है कि अपनी योग स्ट्रिंग को पहले 4+5+5
बनाएं और इसे चुनिंदा कथन में लपेटें और वह अभिव्यक्ति select 4+5+5
sp_executesql
को पास कर दी जाए।
संबंधित सवाल
नए सवाल
sql
संरचित क्वेरी भाषा (एसक्यूएल) डेटाबेस को क्वेरी करने के लिए एक भाषा है। प्रश्नों में कोड उदाहरण, तालिका संरचना, नमूना डेटा और DBMS कार्यान्वयन के लिए एक टैग (जैसे MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2, आदि) का उपयोग किया जाना चाहिए। यदि आपका प्रश्न केवल एक विशिष्ट DBMS (विशिष्ट एक्सटेंशन / सुविधाओं का उपयोग करता है) से संबंधित है, तो इसके बजाय उस DBMS के टैग का उपयोग करें। एसक्यूएल के साथ टैग किए गए सवालों के जवाब में आईएसओ / आईईसी मानक एसक्यूएल का उपयोग करना चाहिए।
ADD
को सही करना चाहते हैं? या आपके पास प्रदर्शन करने के लिए अधिक जटिल अस्थमा रोगी हैं?