2012-10-17 19 views
19

Bazı insanlar için çok basit görünebilir, ancak sadece bunu alamıyorum.
Ben tekrar tekrar aynı tablodan birden MS-SQL SELECT sorguları vardır:
Bir sorguda aynı tablonun birden fazla COUNT SELECTS

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

sonraki


daha ne olurdu böylece

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

ve bir ... Bu sorguyu yazmanın etkili yolu. Ben benzer sorulardan oluşan bir grup kurdum ama bunların hiçbirini işe yaratamadım. Yani herhangi bir yardım büyük beğeni topluyor.

cevap

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

Güzel, çok teşekkür ederim. Ben benzer ('sorgu' sorgusu denedim, ama şimdi yanlış yaptığımı görüyorum. Çok teşekkür ederim. – crashtestxxx

+0

Aynı tabloda birden çok sütun var ve sadece 'Sayfa' sütununu seçtiğinden emin olmak istiyorum. Yaptığı şey bu mu? – crashtestxxx

+0

Anladığımdan emin değilim.Örnek verileri ve istenen çıktıyı sağlamanız yardımcı olacaktır .. – RedFilter

4

Bir GROUP BY Page

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

Ayrıca yapabilirsiniz bir 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 

yapabilirsiniz kullanabilirsiniz da COUNT IF

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

Cevabınız için teşekkür ederim, ben de deneyeceğim. – crashtestxxx

İlgili konular