De COMPTAGE dans SELECT SQL

J'ai une table de rapports qui incluent les champs Case (numéro unique), ISR (Individuels Rapport de Sécurité - numéro unique) et YearsOld.

Il peut y avoir plus d'un ISR pour chaque Cas. Je veux compter le nombre de Cas uniques dans les groupes d'âge.

Ce SQL me donne un décompte du nombre de Rapports:

SELECT  
COUNT(CASE WHEN `YearsOld` = -2) THEN 1 END) `No Report`,
COUNT(CASE WHEN `YearsOld` BETWEEN 0 AND 5) THEN 1 END) `0 to 5`
COUNT(CASE WHEN `YearsOld` BETWEEN 6 AND 12) THEN 1 END) `6 to 12`
FROM `Demographics`

est-il un moyen de modifier cela pour compter les différentes Cases pour ces Groupes d'Âge?

Toujours une possibilité, mais que faire si un cas s'étend sur une personne à partir de 5-6 ans. Voulez-vous le comte à être dans la gamme que l'affaire a commencé, ou au cas où la personne est associée à via d'activité le plus récent.
Peut un Case ont différentes YearsOld âges différents ISR?
Oui. Un rapport de recherche internationale est une Personne de la Sécurité des Rapports sur les effets indésirables des médicaments. Il peut y avoir plus d'un ISR sur un incident spécifique (soumis par deux ou plus de deux journalistes), et il peut y avoir plus d'un ISR sur le même Cas pour les Événements Indésirables qui s'est passé pour lui à des dates différentes. Idéalement, Cas+DateOfEvent+Ans serait utilisé pour compter le nombre exact des Événements Indésirables survenus à une cause, à un Âge donné, mais la Date de l'Événement est souvent omis dans les rapports de Cas+Ans est aussi proche que je peux obtenir de comptage le Cas unique+AdverseEvents. Votre solution ci-dessous fonctionne très bien.

OriginalL'auteur Steve Helgeson | 2012-05-01