2012-10-17 16 views
19

Dla niektórych osób może to wyglądać bardzo prosto, ale po prostu nie mogę go uzyskać.
Mam wielu zapytań SQL MS-wybrać z tej samej tabeli w kółko:
Wiele COUNT SELEKTÓW z tej samej tabeli w jednym zapytaniu

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

następny

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

i tak dalej ...

Co byłoby bardziej skuteczny sposób napisania tego zapytania. Przeszukałem kilka podobnych pytań, ale nie mogłem zrobić z nich żadnej z nich. Tak więc każda pomoc jest bardzo ceniona.

Odpowiedz

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

Nicea, dziękuję bardzo. Próbowałem podobne kwerendy "sum" (case ", ale teraz widzę, co robiłem źle.) Dziękuję bardzo. – crashtestxxx

+0

Mam wiele kolumn w tej samej tabeli i chcę mieć pewność, że zaznacza tylko kolumna' Strona' Czy to jest to, co robi? – crashtestxxx

+0

Nie jestem pewien Rozumiem, dostarczenie przykładowych danych i pożądanych wyników pomogłoby – RedFilter

4

Można użyć GROUP BY Page

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

Można również zrobić 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 

można również COUNT IF

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

Dziękuję za odpowiedź, spróbuję też. – crashtestxxx

Powiązane problemy