Comment le groupe par plage de dates en SQL

Dessin de cette d'autres postes de StackOverflow.com que j'ai trouvé utile.

Je me demandais si il est possible de groupe à l'aide de plages de dates que je n'ai pas de définition explicite de la.

Donc, pour clarifier, dites j'ai une table de la Personne appelée et une colonne appelée Date De Naissance.

J'aimerais groupe par le nombre de personnes nées dans une période.

De sorte qu'il ressemblerait à quelque chose comme ça.

Né Comte

Mar1980 25

Apr1980 452

May1980 42

...

Dec1993 452

La période pourrait être les semaines, les mois et les trimestres.

Si j'ai utilisé l'autre solution, j'aurais besoin de spécifier chaque seule période, même avec des mois et des années, il peut prendre beaucoup de temps comme les gens de la date de naissance varie beaucoup.

select t.DOB as [dob], count(*) as [number of occurences]
from (
      select user_id,
         case when date >= '1980-01-01' and date < '1980-02-01 then 'Jan 1980'
         when date >= '1980-02-01' and date < '1980-03-01 then 'Feb 1980'
         ...
         when date >= '1990-03-01' and date < '1990-04-01 then 'Mar 1990'
        else 'Null' end as DOB
     from Person) t
group by t.DOB

Est-il une solution que vous pouvez penser qui peuvent me permettre de spécifier la taille de l'intervalle, je veux les données de plages et de groupe par ces plages de dates?

  • Votre exemple de requête n'a pas de sens. Quelles sont date et score? Ce qui ne les colonnes représentent, et quels sont leurs types de données? Ce que vous voulez, c'est possible, mais votre question n'est pas de répondre sans certains des DDL et de l'échantillon de données.
  • la chose que j'ai collé il y a une adaptation de la solution sur le lien. J'ai laissé un peu les choses, je vais modifier cela. Mais regardez le tableau ci-dessus que pour la façon dont je suis la planification d'affichage des données (la table avec "Né" et "Compter" que les colonnes.
  • J'apprécie que vous nous avez montré la sortie. Il est impossible de fournir la solution, mais, sans savoir ce que les données d'entrée ressemble - pensez-y de cette façon: "Dis-moi comment je peux construire une maison qui ressemble <quelqu'un> maison, mais je ne vais pas vous dire ce que les matériaux ou les ressources que j'ai pour le construire." Aussi, votre question doit être aussi autonome que possible, de sorte qu'il ne dépend pas d'autres liens; de cette manière, il est consultable et peut servir comme une question avec des solutions sur son propre.
  • ah ok... L'entrée est un tableau appelé Personne, avec une colonne appelée DateOfBirth qui est en datetime2 format. C'est que ce que vous demandez?
  • Comment le Groupe Par Plage de dates, étape par étape, à l'aide d'Exemples peuvent être trouvés dans ce lien sqlserverlearner.com/2012/group-by-date-range-examples
InformationsquelleAutor Diskdrive | 2011-06-15