2012-10-17 17 views
19

कुछ लोगों के लिए यह बहुत आसान लग सकता है, लेकिन मैं बस इसे प्राप्त नहीं कर सकता।
मैं पर एक ही मेज से कई MS-एसक्यूएल का चयन करें प्रश्न:
एक ही तालिका में एक ही तालिका से एकाधिक COUNT SELECTS

SELECT count(Page) as tAEC 
FROM someTable 
WHERE Page LIKE '%AEC%' 

अगले एक

SELECT count(Page) as tTOL 
FROM someTable 
WHERE Page LIKE '%TOL%' 

और इतने पर ...

और क्या होगा इस प्रश्न को लिखने का कुशल तरीका। मैं इसी तरह के सवालों के गुच्छा गुच्छा लेकिन मैं उनमें से कोई भी काम करने के लिए नहीं कर सका। तो किसी भी मदद की बहुत सराहना की है।

उत्तर

53
SELECT sum(case when Page LIKE '%AEC%' then 1 end) as tAEC, 
    sum(case when Page LIKE '%TOL%' then 1 end) as tTOL 
FROM someTable 
+0

अच्छा, बहुत बहुत धन्यवाद। मैंने समान 'sum (case' क्वेरी की कोशिश की है, लेकिन अब मैं देख रहा हूं कि मैं क्या गलत कर रहा था। बहुत बहुत धन्यवाद। – crashtestxxx

+0

मेरे पास एक ही टेबल में कई कॉलम हैं, और मैं यह सुनिश्चित करना चाहता हूं कि यह केवल 'पृष्ठ' कॉलम का चयन करें क्या यह है कि यह क्या करता है? – crashtestxxx

+0

मुझे यकीन नहीं है कि मैं समझता हूं। नमूना डेटा और वांछित आउटपुट प्रदान करने में मदद मिलेगी। – RedFilter

4

आप उपयोग कर सकते हैं एक GROUP BY Page

SELECT 
    Page 
, COUNT(Page) as "nb" 
FROM someTable 
GROUP BY Page 

तुम भी एक GROUP BY CASE...

SELECT 
    CASE 
    WHEN Page LIKE '%AEC%' THEN "AEC" 
    WHEN Page LIKE '%TOL%' THEN "TOL" 
    ELSE "" 
    END AS "type" 
, count(Page) as "nb" 
FROM someTable 
GROUP BY type 

आप कर सकते हैं कर सकते हैं भी COUNT IF

SELECT 
    COUNT(IF(Page LIKE '%AEC%', 1, NULL) THEN "AEC" 
, COUNT(IF(Page LIKE '%TOL%', 1, NULL) THEN "TOL" 
FROM someTable 
+0

आपके उत्तर के लिए धन्यवाद, मैं भी कोशिश करूंगा। – crashtestxxx

संबंधित मुद्दे