Wednesday, 15 April 2015

sql server 2012 - Stored procedure: take rows with summary resilts and place them in output parameters -


एक साधारण क्वेरी ले

  SELECT SUM (Field1), FieldName से TableName GROUP BY फ़ील्ड 2   

मेरे मामले में मुझे पता है कि फ़ील्ड 2 (1-5) के लिए मैक्स 5 अलग-अलग मान हैं, इसलिए यह क्वेरी अधिकतम 5 पंक्तियां वापस देगी (कम हो सकती है, यदि उदाहरण के लिए, फ़ील्ड 2 मान = 2 के साथ कोई रिकॉर्ड नहीं है।)

मैं किस चीज़ में दिलचस्पी है, वह SUM (field1) से OUTPUT पैरामीटर, Field2 मान के आधार पर होता है। वर्तमान में मैं यह संग्रहीत कार्यविधि (सरलीकृत) से करता हूं:

  SELECT @ PRM1 = SUM (फ़ील्ड 1) से तालिका नाम WHERE फ़ील्ड 2 = 1 SELECT @ PRM2 = SUM (फ़ील्ड 1) से तालिका नाम WHERE Field2 = 2 SELECT @ Prm3 = SUM (फील्ड 1) से तालिका नाम WHERE फ़ील्ड 2 = 3 SELECT @ PRM4 = SUM (फ़ील्ड 1) से तालिका नाम WHERE फ़ील्ड 2 = 4 SELECT @ PRM5 = SUM (फ़ील्ड 1) से तालिका नाम WHERE Field2 = 5   < P> क्या इस को प्राप्त करने का एक बेहतर तरीका है?  

संपादित करें: यह संग्रहीत कार्यविधि 10 से अधिक क्वेरी निष्पादित करती है और उनमें से प्रत्येक से सारांश प्राप्त करती है मैंने ग्राहक से 10 + विभिन्न प्रश्नों को अलग से निष्पादित न करने का फैसला किया है, लेकिन उन्हें एक संग्रहीत कार्यविधि में रख दिया है और फिर आउटपुट पैरामीटर के माध्यम से परिणाम लौटाता है। उन प्रश्नों को केवल एक बैच के रूप में, उन्हें अकेला फोन करने का कोई उद्देश्य नहीं होगा। हालांकि, अगर आपको लगता है कि यह एक अच्छा विचार नहीं है, तो मैं आपकी बहस को सुनूंगा।

आप यह सशर्त SUM ()

  SELECT @ PRM1 = SUM के साथ किया जा सकता है (मामले में फ़ील्ड 2 = 1 THEN फ़ील्ड 1 ELSE NULL END), @ PRM2 = SUM (मामले में फ़ील्ड 2 = 2 THEN फ़ील्ड 1 ELSE NULL END), @ PRM3 = SUM (मामला जब फ़ील्ड 2 = 3 THEN फ़ील्ड 1 ELSE NULL END), @ PRM4 = SUM (मामले में फ़ील्ड 2 = 4 THEN फ़ील्ड 1 ELSE NULL END), @ PRM5 = SUM (मामला जब field2 = 5 THEN फ़ील्ड 1 ELSE NULL END) से तालिका 1   

यहां डेमो

No comments:

Post a Comment