Détecter les plages de dates consécutives à l'aide de SQL
Je veux remplir le calendrier de l'objet qui nécessite de début et date de fin de l'information. J'ai une colonne qui contient une séquence de dates. Certaines dates sont consécutives (un jour de différence) et certains ne sont pas.
InfoDate
2013-12-04 consecutive date [StartDate]
2013-12-05 consecutive date
2013-12-06 consecutive date [EndDate]
2013-12-09 [startDate]
2013-12-10 [EndDate]
2014-01-01 [startDate]
2014-01-02
2014-01-03 [EndDate]
2014-01-06 [startDate]
2014-01-07 [EndDate]
2014-01-29 [startDate]
2014-01-30
2014-01-31 [EndDate]
2014-02-03 [startDate]
2014-02-04 [EndDate]
Je veux choisir consécutives gamme de dates de début et date de fin (la première et de la dernière dans le bloc).
StartDate EndDate
2013-12-04 2013-12-06
2013-12-09 2013-12-10
2014-01-01 2014-01-03
2014-01-06 2014-01-07
2014-01-29 2014-01-31
2014-02-03 2014-02-04
Je veux résoudre le problème à l'aide de SQL.
source d'informationauteur Shamim
Vous devez vous connecter pour publier un commentaire.
Pas de jointures ou les expressions cte nécessaire. La norme lacunes-et-de-l'île solution est de groupe par (valeur moins row_number), puisque c'est invariant dans une consécutifs de la séquence. Le début et dates de fin sont juste les MIN() et MAX() du groupe.
Ici vous allez..
s'il vous plaît n'oubliez pas de le marquer comme réponse, si cela répond à votre question.
J'ai inséré ces valeurs dans un tableau appelé
#consec
et puis perforemed suivantes:Tant que votre date de périodes se chevauchent pas, que devrait faire le travail pour vous.
Ici, c'est mon exemple avec des données de test:
Remplacer #tmp données avec votre table.