2012-07-26 20 views
10

कैसे मैं निम्नलिखित छद्म-एसक्यूएल बयान के 'अर्थ' लागू करते हैं:TSQL गणना 'कहाँ' स्थिति

COUNT(distinct id where attribute1 > 0) 

दूसरे शब्दों में, मैं कैसे सशर्त, अलग गिनती बयान कर सकता हूँ?

धन्यवाद!

उत्तर

27

वैसे आप संपूर्ण क्वेरी फ़िल्टर कर सकते हैं, तो LittleBobbyTables पहले से ही आप के लिए the answer है। यदि नहीं, तो आप उस कॉलम को इस प्रकार प्राप्त कर सकते हैं:

count(distinct case when attribute1 > 0 then id end) -- implicit null-else, iirc 
+0

मुझे इसे एक क्वेरी के हिस्से के रूप में आवश्यक था। एक समग्र समारोह में इसका उपयोग करने में क्या गलत है? – CodeKingPlusPlus

+0

+1, और आपको सही याद है: जब 'ईएलएसई' छोड़ा जाता है, तो 'ईएलएसई नूल' का अर्थ है। एक अलग नोट पर, मैं सशर्त समेकन के संबंध में वास्तव में इस "प्रदर्शन चिंता" को समझ नहीं पा रहा हूं। मेरा मतलब है, कुल कार्य में 'केस' के विकल्प क्या हैं (उदाहरण के लिए, जब आपकी क्वेरी को सशर्त और बिना शर्त गणना दोनों वापस करने की आवश्यकता होती है)? –

+0

मैं देखता हूं, लेकिन आप पहले से ही अपने उत्तर में निर्धारित कर चुके हैं, इसलिए आपका अंतिम विवरण ऐसा लगता है जैसे कोई * पूरी तरह वैध * सशर्त एकत्रीकरण के उपयोग से नाराज हो सकता है। अगर आप वास्तव में इसका मतलब था तो मैं बस इसे स्पष्ट करना चाहता था। और सामान्य रूप से, मैं आपसे सहमत हूं कि यह बात * किसी और चीज की तरह दुर्व्यवहार किया जा सकता है। –

2

आप काफी यह था:,

SELECT COUNT(DISTINCT [ID]) AS DistinctID 
FROM YourTable 
WHERE attribute1 > 0