2012-10-17 13 views
19

Per alcune persone potrebbe sembrare molto semplice, ma semplicemente non riesco a ottenerlo.
ho più query di MS-SQL SELECT dalla stessa tabella più e più volte:
SELEZIONA più COUNT dalla stessa tabella in una query

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

prossimo

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

e così via ...

cosa sarebbe più modo efficiente per scrivere questa query. Ho cercato su Google un gruppo di domande simili ma non riuscivo a far funzionare nessuno di loro. Quindi qualsiasi aiuto è molto apprezzato.

risposta

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

Nizza, vi ringrazio molto. Ho provato una somma simile (caso 'query', ma ora vedo cosa stavo facendo. Grazie mille – crashtestxxx

+0

Ho più colonne nella stessa tabella, e voglio assicurarmi che selezioni solo la colonna 'Pagina' – crashtestxxx

+0

Non capisco. Fornire dati di esempio e l'output desiderato sarebbe d'aiuto – RedFilter

4

È possibile utilizzare un GROUP BY Page

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

si può anche fare un 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 

È inoltre possibile COUNT IF

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

Grazie per la tua risposta, ci proverò anche io. – crashtestxxx

Problemi correlati