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

SQL Oracle Discussion :

Sommer les lignes et arrêter lorsque SUM = 0


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 415
    Points : 41
    Points
    41
    Par défaut Sommer les lignes et arrêter lorsque SUM = 0
    Bonjour mes amis,

    afin de compléter mon projet dont je travaille depuis 1 semaine, je vous sollicite de me donner un coup de main sur ce qui suit :

    j'ai une requête qui me récupère les champs suivant

    CHAMP_A - CHAMP_B - DATE_A - MONTANT
    ...
    ...
    ..

    je veux sommer les montant (toutes les lignes) sachant que montant contenant des valeurs positives et d'autres négatives.

    je dois mettre la somme dans la ligne courante
    exemple j'ai 20 lignes :
    je somme la 1ere et la 2eme = résultat dans la 2eme (x) ligne
    je somme la 2eme (x) et la 3eme = résultat dans la 3eme (y) ligne
    je somme la 3eme (y) et la 4eme = résultat dans la 4eme ligne
    .
    .
    .

    je dois récupérer la ligne ou j'obtient 0 comme résultat.

    merci par avance.

  2. #2
    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
    Essayez quelque chose de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    with cte_sum_cumul as
    (
    select CHAMP_A, CHAMP_B, DATE_A, MONTANT
          , sum(montant) over(order by date_a asc) as MONTANT_CUMUL
      from matable
    )
    select CHAMP_A, CHAMP_B, DATE_A, MONTANT, MONTANT_CUMUL
      from cte_sum_cumul
     where MONTANT_CUMUL = 0;
    Attention, si votre somme n'arrive jamais à 0 vous n'aurez pas de résultat.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 415
    Points : 41
    Points
    41
    Par défaut
    Merci pour votre retour Waldar, mais vous m'avez peut être mal compris,

    je explique autrement,


    je dois grouper les sommes par CHAMP_A, CHAMP_B et récupérer la date ou les sommes sont a 0 ( il pourrait avoir plusieurs ligne pour le même couple (CHAMP_A , CHAMP_B)

  4. #4
    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 LandGreen Voir le message
    mais vous m'avez peut être mal compris,
    On va être précis sur les termes, j'ai compris ce que vous avez expliqué dans votre poste initial, à savoir :

    Citation Envoyé par LandGreen Voir le message
    je veux sommer les montant (toutes les lignes)
    Citation Envoyé par LandGreen Voir le message
    je dois grouper les sommes par CHAMP_A, CHAMP_B
    Je ne peux pas comprendre ce que vous n'avez pas décrit.

    Je vous propose de reformuler "mais vous m'avez peut être mal compris" en "j'ai mal expliqué".
    En soit ce n'est pas grave de mal expliquer, ça arrive tout le temps à tout le monde.
    Par contre retourner la faute sur autrui, c'est de la malhonnêteté intellectuelle, grossière de surcroît.

    Fermons cette parenthèse et revenons au sujet qui vous préoccupe.
    Fournissez quelques données représentatives de votre problème en entrée et ce que vous attendez en sortie.
    Idéalement sous forme de script SQL : avec un with from dual union all, un create table + insert, à votre convenance.
    Et mon petit doigt (celui qui comprend mal je pense) fait une prémonition : la solution finale sera très proche de celle que je vous ai proposée.

  5. #5
    Membre expert
    Avatar de Sunchaser
    Homme Profil pro
    OPNI (Objet Programmant Non Identifié)
    Inscrit en
    Décembre 2004
    Messages
    2 059
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : OPNI (Objet Programmant Non Identifié)
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 059
    Points : 3 204
    Points
    3 204
    Par défaut
    Bonsoir,

    Citation Envoyé par LandGreen Voir le message

    je veux sommer les montant (toutes les lignes) sachant que montant contenant des valeurs positives et d'autres négatives.

    je dois mettre la somme dans la ligne courante
    exemple j'ai 20 lignes :
    je somme la 1ere et la 2eme = résultat dans la 2eme (x) ligne
    je somme la 2eme (x) et la 3eme = résultat dans la 3eme (y) ligne
    je somme la 3eme (y) et la 4eme = résultat dans la 4eme ligne
    .
    .
    .

    je dois récupérer la ligne ou j'obtient 0 comme résultat.
    Cela me semble ressembler à un de tes précédents posts, qui partait finalement sur un "LAG", non?

    Comme le dit Waldar, quelques données pour tester seraient les bienvenues.

    @+
    Aux persévérants aucune route n'est interdite.
    Celui qui ne sait pas se contenter de peu ne sera jamais content de rien.
    Current Status
    Avec 40% de pollinisateurs invertébrés menacés d'extinction selon les Nations Unies, l'homme risque fort de passer de la monoculture à la mono diète...
    Faîtes quelque chose de bien avec vos petits sous: Enfants du Mekong

  6. #6
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 415
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par Sunchaser Voir le message
    Bonsoir,

    Cela me semble ressembler à un de tes précédents posts, qui partait finalement sur un "LAG", non?


    Sunchaser, j'ai bien dit "AFIN DE COMPLÉTER MON PROJET" donc c'est la suite de "LAG".

    merci pour votre aide

  7. #7
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    415
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 415
    Points : 41
    Points
    41
    Par défaut
    merci Waldar, résolu avec WITH clause

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/11/2012, 12h27
  2. Sommer les lignes précédentes
    Par patgabjoe dans le forum SQL
    Réponses: 2
    Dernier message: 03/05/2010, 16h30
  3. Comment afficher les lignes lorsque la valeur est vide ?
    Par matimat2k4 dans le forum Langage SQL
    Réponses: 24
    Dernier message: 02/04/2008, 16h29
  4. [C#] Compter les lignes d'un DataSet
    Par alexischmit dans le forum ASP.NET
    Réponses: 13
    Dernier message: 26/04/2004, 15h17
  5. determiner les ligne visible ds un RichEdit
    Par hhfr dans le forum Composants VCL
    Réponses: 4
    Dernier message: 19/09/2002, 18h15

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