IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Regrouper des lignes sur base de périodes consécutives


Sujet :

Langage SQL

  1. #1
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2023
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Regrouper des lignes sur base de périodes consécutives
    Bonjour,

    Je voudrais connaitre un moyen par SQL de pouvoir regrouper des lignes sur base de périodes consécutives.
    En gros, pour un même code, si la date de début est exactement égale à un jour en plus de la date de fin, nous fusionnons les lignes

    Il peut y avoir théoriquement une infinité de ligne à regrouper.

    Par exemple ma TABLE en 3 colonnes :

    Code Date de début Date de fin
    A 01/01/2020 31/12/2020
    A 01/01/2021 15/02/2021
    A 25/10/2021 31/12/2021
    B 01/01/2022 30/04/2022
    B 01/05/2022 31/05/2022
    B 01/06/2022 25/06/2022
    B 26/06/2022 14/10/2022
    B 15/10/2022 30/11/2022
    A 05/12/2022 31/12/2022
    A 01/01/2023 30/04/2023
    C 08/01/2024 31/12/9999

    deviendrait :

    Code Date de début Date de fin
    A 01/01/2020 15/02/2021
    A 25/10/2021 31/12/2021
    B 01/01/2022 30/11/2022
    A 05/12/2022 30/04/2023
    C 08/01/2024 31/12/9999

    Pourriez-vous me dire si cela est possible et si oui, me donner la solution
    D'avance, je vous remercie,

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Décembre 2019
    Messages
    1 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Décembre 2019
    Messages : 1 138
    Points : 1 918
    Points
    1 918
    Par défaut
    Bonjour,

    En SQL Oracle c'est possible oui, je ne sais pas pour les autres SGBD. Quelle est ta BDD et sa version?

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Flowned Voir le message
    Bonjour,

    Je voudrais connaitre un moyen par SQL de pouvoir regrouper des lignes sur base de périodes consécutives.
    En gros, pour un même code, si la date de début est exactement égale à un jour en plus de la date de fin, nous fusionnons les lignes

    Il peut y avoir théoriquement une infinité de ligne à regrouper.
    Cela s’appelle une agrégation d'intervalle. Lisez l'article que j'ai écrit à ce sujet et qui présente différentes solutions :
    https://blog.developpez.com/sqlpro/p...alles_en_sql_1

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  4. #4
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Mars 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste d'exploitation
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2023
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Bonjour vanagreg et SQLpro,

    Un grand merci pour vos réponses rapides.

    SQLpro, c'est exactement ce que je cherchais !
    Lorsque l'on ne connait pas le nom, c'est parfois difficile de faire la recherche correcte.

    Bonne continuation !

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    C'est teradata qui gagne à ce jeu là, tant en terme de simplicité d'écriture que de performances :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select normalize code, period(date_debut, date_fin + 1)
      from MaTable;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 13
    Dernier message: 18/04/2021, 11h56
  2. Demande de macro vba pour supprimer des lignes sur base d'une condition
    Par DOLCE59 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/03/2021, 05h52
  3. [XL-2010] Regrouper des infos sur une même ligne
    Par Ysae68 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 19/04/2016, 08h54
  4. Ordre de sélection des lignes sur une table DB2
    Par Pierre Formosa dans le forum DB2
    Réponses: 1
    Dernier message: 26/04/2006, 20h03
  5. Tester des DOMAINS sur Base INTERBASE 6.0
    Par Thierry Laborde dans le forum InterBase
    Réponses: 3
    Dernier message: 28/09/2005, 13h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo