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 :

Cumul par recursive


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 41
    Points : 5
    Points
    5
    Par défaut Cumul par recursive
    Salam,
    je veux cumuler des valeurs par id en utilisant la fonction recursive, voila mon exemple:

    la liste:
    id dt abn
    1 27/01/2023 52
    1 28/01/2023 822
    1 29/01/2023 3476
    1 30/01/2023 510
    1 31/01/2023 178
    1 01/02/2023 132
    2 28/01/2023 822
    2 29/01/2023 3476
    2 30/01/2023 510
    2 31/01/2023 178
    2 01/02/2023 132
    2 02/02/2023 102
    3 29/01/2023 3476
    3 30/01/2023 510
    3 31/01/2023 178
    3 01/02/2023 132
    3 02/02/2023 102
    3 03/02/2023 62

    je veux ce résultat:
    1 27/01/2023 52
    1 28/01/2023 874
    1 29/01/2023 4350
    1 30/01/2023 4860
    1 31/01/2023 5038
    1 01/02/2023 5170
    2 28/01/2023 822
    2 29/01/2023 4298
    2 30/01/2023 4808
    2 31/01/2023 4986
    2 01/02/2023 5118
    2 02/02/2023 5220
    3 29/01/2023 3476
    3 30/01/2023 3986
    3 31/01/2023 4164
    3 01/02/2023 4296
    3 02/02/2023 4398
    3 03/02/2023 4460

    j'ai fait une requete mais elle me donne pas le bon resultat:
    WITH recursive tt as (select 1 as id,dt ,sum(abn) over (order by id,dt) as abn from t_fi where id=1
    union
    select 1+id as id,dt ,sum(abn) over (order by id,dt) as abn from t_fi where id=id)

    select* from tt

    merci d'avance.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 768
    Points : 52 577
    Points
    52 577
    Billets dans le blog
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    WITH 
    T AS
    (SELECT id, dt, abn, 
            ROW_NUMBER() OVER( PARTITION BY id ORDER BY dt) AS N
     FROM   t_fi),
    tt as 
    (SELECT *
     FROM   T
     WHERE  N = 1
     UNION ALL
     SELECT T.id, T.dt, tt.abn, T.abn + tt.abn AS SUM_ABN
     FROM   T 
            JOIN tt ON T.id = tt.id AND T.N + 1 = tt.N
    )
    SELECT * 
    FROM tt;
    Lisez mon cours...https://sqlpro.developpez.com/cours/...te-recursives/

    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/ * * * * *

  3. #3
    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
    Nul besoin de récursivité ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select id, dt
         , sum(abn) over (partition by id order by dt rows unbounded preceding) as abn_cumul
      from t_fi;

  4. #4
    Futur Membre du Club
    Inscrit en
    Août 2008
    Messages
    41
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 41
    Points : 5
    Points
    5
    Par défaut
    salam,
    je vous remercie beaucoup pour vos aides .
    le probleme est resolu.
    merci waldar pour ta résolution optimisée.

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 768
    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 768
    Points : 52 577
    Points
    52 577
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Nul besoin de récursivité ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select id, dt
         , sum(abn) over (partition by id order by dt rows unbounded preceding) as abn_cumul
      from t_fi;
    D'accord mais tu triche !!!!! Il voulait un exemple de récursivité !

    ATTENTION, si tu continu comme ça je vais te mettre un MOINS 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/ * * * * *

  6. #6
    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
    Citation Envoyé par SQLpro Voir le message
    ATTENTION, si tu continu comme ça je vais te mettre un MOINS 1 !


    Conclusion : il ne faut jamais écouter les clients !

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

Discussions similaires

  1. Afficher les totaux cumulés par page
    Par thierrykammi dans le forum iReport
    Réponses: 1
    Dernier message: 14/10/2008, 17h10
  2. Cumul par Référence
    Par abuh dans le forum Langage SQL
    Réponses: 1
    Dernier message: 19/10/2007, 11h52
  3. Requete avec cumul par semaine
    Par Fleur-Anne.Blain dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/07/2007, 15h24
  4. Réponses: 5
    Dernier message: 25/06/2007, 11h01
  5. [CR.NET] Gestion des reports/cumuls par page
    Par Audrey Stelle dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 18/06/2005, 13h14

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