2010-06-28 6 views
3

Existe-t-il un moyen d'obtenir plusieurs comptes en fonction de plusieurs conditions à partir de la même table? par ex. Comptez quand Jours est inférieur à 15, et compter pendant des jours entre 15 et 30.Nombre multiple() à partir d'une seule table

Répondre

13

Oui, vous pouvez combiner SUM et CASE:

SELECT 
    SUM(CASE WHEN condition1 THEN 1 ELSE 0 END) count1, 
    SUM(CASE WHEN condition2 THEN 1 ELSE 0 END) count2 
FROM yourtable 

Donc, pour votre exemple précis:

SELECT 
    SUM(CASE WHEN days < 15 THEN 1 ELSE 0 END) count1, 
    SUM(CASE WHEN days BETWEEN 15 AND 30 THEN 1 ELSE 0 END) count2 
FROM yourtable 

Si la majorité des lignes ont days > 30, il peut être utile d'ajouter un WHERE days <= 30 à la fin de la requête en tant qu'optimisation. Sachez également que BETWEEN inclut ses deux extrémités.

+0

A travaillé comme un charme. Merci de votre aide. – Rabin

Questions connexes