Saturday 15 May 2010

count - A simple query in SQL -


मेरे पास 2 टेबल हैं प्रत्येक तालिका में दो स्तंभ हैं।

  DocumentNumber price   

मैं एक ही दस्तावेज दिखाने के लिए एक क्वेरी का उपयोग करना चाहता हूँ और प्रत्येक तालिका में ड्यूकलिन संख्या की गिनती। मैं इस कोड का इस्तेमाल किया।

  Sheet.DocumentNumber का चयन करें, Sheet2.DocumentNumber, (sheet.documentnumber) गणना, गणना (sheet2.documentnumber) शीट से, Sheet2 जहां sheet.DocumentNumber = sheet2.DocumentNumber समूह पत्रक द्वारा। दस्तावेज़ दस्तावेज़, Sheet2.DocumentNumber   

लेकिन दस्तावेज़ संख्याओं की गिनती के बजाय यह मुझे दो कॉलम के कार्टेशियन दिखाता है।

और मैं प्रत्येक तालिका का मूल्य दिखाना चाहता हूं और (sheet.price) शून्य (sheet2.price)

कृपया मेरी क्वेरी को पूरा करें।

आपको उचित शामिल वाक्यविन्यास का उपयोग करना चाहिए। विशेष रूप से, इसके लिए, आपको पूर्ण बाहरी सहभागी का उपयोग करना चाहिए क्योंकि यह संभव है कि दस्तावेज़ में एक या दूसरे तालिका में कोई अभिलेख न हो।

दूसरा, क्योंकि आप नहीं डुप्लिकेट की गणना करना चाहते हैं, आपको कुछ गिनना चाहिए निम्नलिखित मानते हैं कि प्रत्येक तालिका में एक id स्तंभ (कुछ प्रकार का) है:

  DocumentNumber के रूप में संगठित चयन करें (s.DocumentNumber, s2.DocumentNumber), गणना (अलग s.id), गिनती (अलग s2.id) से शीट के पूर्ण बाहरी श्वेत पत्र 2 s2 s.DocumentNumber = s2.DocumentNumber समूह को कोलासेज (s.DocumentNumber, s2.DocumentNumber) द्वारा;   

यदि आपके पास id कॉलम नहीं है, या यदि आपका डेटाबेस पूर्ण बाहरी कनेक्ट का समर्थन नहीं करता है, तो निम्न भी होगा काम:

  (cnt_s2) cnt_s2 के रूप में ((DocumentNumber का चयन करें, गिनती (*) cnt_s, cnt_s2 के रूप में 0 शीट समूह से के रूप में DocumentNumber द्वारा से DocumentNumber, अधिकतम (cnt_s) cnt_s के रूप में, अधिकतम चयन ) यूनियन सब (DocumentNumber द्वारा दस्तावेज संख्या, 0, गिनती (*) DocumentNumber द्वारा शीट 2 एस 2 समूह से cnt_s2 के रूप में चयन करें)) DocumentNumber द्वारा टी समूह;   

संपादित करें:

union all दृष्टिकोण वास्तव में कीमत के लिए बेहतर है:

  DocumentNumber का चयन करें , अधिकतम (cnt_s) cnt_s के रूप में, अधिकतम (cnt_s2) cnt_s2, अधिकतम (price_s) के रूप में - अधिकतम (price_s2) से ((DocumentNumber का चयन करें, गिनती (*) cnt_s के रूप में, 0 cnt_s2, योग (कीमत) price_s के रूप में, 0 के रूप में के रूप में DocumentNumber द्वारा शीट के ग्रुप से price_s2) यूनियन सब (DocumentNumber, 0, गिनती (*) के रूप में cnt_s2, 0, sum (मूल्य) के रूप में दस्तावेज़ संख्या से शीट 2 एस 2 ग्रुप से मूल्य_एस 2)) DocumentNumber द्वारा टी ग्रुप;   

नोट: यह संस्करण 0 के रूप में एक गायब मूल्य मान लेता है। आप उस स्थिति के लिए 0 को NULL से बदलना चाहते हैं। < / P>

No comments:

Post a Comment