यह होना चाहिए:
SELECT SalesID, COUNT(*)
FROM AXDelNotesNoTracking
GROUP BY SalesID
HAVING COUNT(*) > 1
अपने प्रारंभिक क्वेरी के बारे में:
- आप ऐसा नहीं कर सकते एक चुनें * के बाद से इस आपरेशन द्वारा एक ग्रुप की आवश्यकता है और स्तंभों या तो ग्रुप द्वारा में होना चाहिए या कुल फ़ंक्शन (यानी COUNT, SUM, MIN, MAX, AVG, आदि)
- चूंकि यह एक समूह द्वारा ऑपरेशन है, इसलिए एक हैविंग क्लॉज इसे फ़िल्टर करेगा कहां
संपादित करें:
और मैं सिर्फ इस के बारे में सोचा, यदि आप जो आइटम एक बार से अधिक में देखना चाहते हैं, (लेकिन यह जो डेटाबेस का उपयोग कर रहे पर निर्भर करता है):
;WITH cte AS (
SELECT *, ROW_NUMBER() OVER (PARTITION BY SalesID ORDER BY SalesID) AS [Num]
FROM AXDelNotesNoTracking
)
SELECT *
FROM cte
WHERE cte.Num > 1
बेशक, यह केवल उन पंक्तियों को दिखाता है जो एक ही बिक्री आईडी के साथ दिखाई दिए हैं लेकिन प्रारंभिक SalesID मान नहीं दिखाते हैं जो एक से अधिक बार प्रकट हुए हैं। मतलब, यदि कोई बिक्री आईडी 3 बार दिखाती है, तो यह क्वेरी उदाहरण 2 और 3 दिखाएगी लेकिन पहले उदाहरण नहीं। फिर भी, यह इस बात पर निर्भर हो सकता है कि आप कई SalesID मानों की तलाश क्यों कर रहे हैं।
EDIT2:
निम्न क्वेरी नीचे एपीसी द्वारा पोस्ट किया गया और में है कि यह सभी पंक्तियों जिसमें एक SalesID एक बार से अधिक दिखाई दिया है पता चलता CTE की तुलना में मैं ऊपर उल्लेख बेहतर है। मैं यहां पूर्णता के लिए इसे शामिल कर रहा हूं। मैंने केवल SalesID मानों को एक साथ समूहीकृत रखने के लिए एक आदेश दिया है। ऑर्डर द्वारा उपरोक्त सीटीई में भी मदद मिल सकती है।
SELECT *
FROM AXDelNotesNoTracking
WHERE SalesID IN
( SELECT SalesID
FROM AXDelNotesNoTracking
GROUP BY SalesID
HAVING COUNT(*) > 1
)
ORDER BY SalesID
स्रोत
2012-03-16 12:11:58
क्या एसक्यूएल की विविधता? माई एसक्यूएल? माइक्रोसॉफ्ट SQL सर्वर? आकाशवाणी? पहुंच? आदि – UnhandledExcepSean