2011-12-05 17 views
5

मेरा आदेश तालिका इस प्रकार है:एसक्यूएल: खंड में अलग गणना कहाँ है?

id fk_customer 
1 34 
2 34 
3 34 
4 7 
5 7 
6 8 

मैं केवल उन ग्राहकों को जो अधिक से अधिक 2 आदेश का चयन करना चाहते हैं।

यह does not लेकिन काम:

SELECT * FROM order WHERE COUNT DISTINCT fk_customer > 2

कृपया सलाह!

धन्यवाद

उत्तर

10

इस कोशिश:

SELECT fk_customer, COUNT(*) 
FROM dbo.[Order] 
GROUP BY fk_customer 
HAVING COUNT(*) > 2 

Order सबसे एसक्यूएल आधारित डाटाबेस सिस्टम में एक आरक्षित शब्द है - एक तालिका नाम के लिए बुरा विकल्प .... एसक्यूएल सर्वर में, आप इसे लगाने की जरूरत है स्क्वायर ब्रैकेट में यह स्पष्ट करने के लिए कि यह एक ऑब्जेक्ट नाम (आरक्षित शब्द नहीं) का उपयोग किया जाना है।

+0

हकीकत में मेरी मेज एक छोड़ दिया तीन अन्य तालिकाओं के साथ शामिल हो जाता है – jorrebor

+0

@jorrebor: हाँ - और जहां उस के साथ समस्या है ?? –

+0

क्षमा करें मैं अभी भी उस टिप्पणी को संपादित कर रहा था। मैंने आपके द्वारा प्रस्तावित किए गए कई बदलावों की कोशिश की। लेकिन कुछ भी सही परिणाम नहीं देता है, कृपया मेरा आगामी संपादन देखें। – jorrebor

1

इस

SELECT fk_customer FROM orders 
GROUP BY fk_customer 
HAVING COUNT(id) > 2 
0
SELECT fk_customer, COUNT(fk_customer) FROM [order] 
GROUP BY fk_customer HAVING COUNT(*) > 2 
1

आप WHERE खंड में COUNT उपयोग करने का प्रयास करते हैं, तो एसक्यूएल एक अपवाद फेंक होगा की कोशिश करो। यदि आप HAVING खंड या एक चयन सूची में निहित उप-क्वेरी के भीतर हैं तो आप केवल एक समग्र फ़ंक्शन का उपयोग कर सकते हैं।

SELECT fk_customer, COUNT(*)  
    FROM dbo.[Order] 
GROUP 
    BY fk_customer 
HAVING COUNT(*) > 2 
संबंधित मुद्दे