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 :

Sommes avec update


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Février 2018
    Messages : 481
    Par défaut Sommes avec update
    Bonjour tout el mondo,

    j'ai une table contient les colonnes suivantes

    DATE REF MONTANT INDICE TOTAL_IND_1 TOTAL_IND_2

    je veux faire un programme qui permet de dérouler toute la table et faire des modification dans les colonnnes : TOTAL_IND_1 & TOTAL_IND_2 de la manière suivantes

    pour la même REF si indice = 1 alors je somme MONTANT et je mets le résultat dans TOTAL_IND_1
    pour la même REF si indice = 2 alors je somme MONTANT et je mets le résultat dans TOTAL_IND_2

    merci d'avance

  2. #2
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Février 2018
    Messages : 481
    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
    17
    exemple :
     
    ___DATE_______REF___MONTANT___INDICE___TOTAL_IND_1___TOTAL_IND_2
    01/02/2018____001__1000______1______________0______________0
    21/02/2018____003__250_______1______________0______________0
    01/10/2018____001__150_______2______________0______________0
    01/09/2018____001__350_______1______________0______________0
    01/11/2018____003__250_______1______________0______________0
     
    resultat
     
    ___DATE_______REF___MONTANT___INDICE___TOTAL_IND_1___TOTAL_IND_2
    01/02/2018____001__1000_______1______________null______________null
    21/02/2018____003__250________1______________null______________null
    01/10/2018____001__150________2______________0_________________150
    01/09/2018____001__350________1______________1350______________null
    01/11/2018____003__250________1______________500_______________null

  3. #3
    Membre Expert
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Par défaut
    Niveau modélisation, en quoi est-ce utile de créer une colonne "Total" dédiée à chaque indice ?
    Si vous avez un 3ème indice à gérer, vous créez une troisième colonne et ainsi de suite ?
    Bref, pourquoi ne pas utiliser une seule colonne "Total", l'indice associé vous indiquera de quelle type de somme il s'agit


    Sinon voici un début de solution à retranscrire pour vos données avec gestion d'une seule colonne total :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    UPDATE MaTable U
    SET Total =
      (SELECT SUM(montant)
      FROM MaTable
      WHERE U.indice = indice
      AND U.reference = reference
      )
    WHERE Date =
      (SELECT MAX(Date)
      FROM MaTable
      WHERE U.indice = indice
      AND U.reference = reference
      )
    Pour gérer vos deux colonnes "Total par indice", faut mettre les deux colonnes dans l'update et ajouter du code en dur (Ce qui n'est pas terrible du tout...)

  4. #4
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Février 2018
    Messages : 481
    Par défaut
    Citation Envoyé par Scriuiw Voir le message
    Niveau modélisation, en quoi est-ce utile de créer une colonne "Total" dédiée à chaque indice ?
    Si vous avez un 3ème indice à gérer, vous créez une troisième colonne et ainsi de suite ?
    Bref, pourquoi ne pas utiliser une seule colonne "Total", l'indice associé vous indiquera de quelle type de somme il s'agit


    Sinon voici un début de solution à retranscrire pour vos données avec gestion d'une seule colonne total :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    UPDATE MaTable U
    SET Total =
      (SELECT SUM(montant)
      FROM MaTable
      WHERE U.indice = indice
      AND U.reference = reference
      )
    WHERE Date =
      (SELECT MAX(Date)
      FROM MaTable
      WHERE U.indice = indice
      AND U.reference = reference
      )
    Pour gérer vos deux colonnes "Total par indice", faut mettre les deux colonnes dans l'update et ajouter du code en dur (Ce qui n'est pas terrible du tout...)
    merci infiniment pour votre retour ça m'a aidé à avancer,
    juste pour infos, je n'ai que 2 indices et lorsque je fixe les noms de colonnes ça donne des résultats faux !

    on peut utiliser un curseur sinon ou une jointure ?

  5. #5
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 226
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 226
    Par défaut
    En lançant la requête de Scriuiw 2 fois, avec de petits changement entre les 2, ça devrait marcher.

  6. #6
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Février 2018
    Messages : 481
    Par défaut
    Oui après avoir apporter des modification ça marchait!

    la prochaine étape et de faire la différence entre TOTAL_IND_1 et TOTAL_IND_2 dans une autre colonne TOTAL,et éliminer TOTAL_IND_1 - TOTAL_IND_2 = 0 donc retourner la date ou TOTAL_IND_1 - TOTAL_IND_2 <> 0

    est ce que vous avez des idées?

  7. #7
    Membre Expert
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Par défaut
    Le mieux serait de tenter quelque chose déjà et de nous le présenter

    D'autre part votre approche me semble étrange (mais je ne connais pas le périmètre et les contraintes de votre projet) car il s'agit de mettre à jour des montants pour des dates données (la dernière en l'occurrence pour une référence et un indice donné).
    Que se passe t-il dans ce cas si une nouvelle date est insérée ?
    - Nécessité de basculer les totaux sur cette dernière date
    - RAZ de la date précédente ?

    De ce fait, une vue ne serait-elle pas plus judicieuse (Renverra le total systématiquement sur la dernière date) ?

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

Discussions similaires

  1. Somme avec une requete sql
    Par virtuose dans le forum Langage SQL
    Réponses: 8
    Dernier message: 26/01/2006, 16h32
  2. Utilisation d'alias avec Update
    Par Jacques - 06 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/01/2006, 00h31
  3. [Excel]Faire une somme avec une macro
    Par Chlo dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 13/01/2006, 19h53
  4. Pb récupération d'une somme avec SUM()
    Par momo99 dans le forum InterBase
    Réponses: 3
    Dernier message: 01/11/2005, 15h38
  5. Problème de somme avec Qreport
    Par Oluha dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/09/2005, 11h23

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