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 :

[SQL Server 8] Le résultat de la ligne précédente pour la ligne courante


Sujet :

Langage SQL

  1. #1
    Membre habitué Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Points : 144
    Points
    144
    Par défaut [SQL Server 8] Le résultat de la ligne précédente pour la ligne courante
    Bonjour!

    Je travaille avec SQL-8... je vais tenter d'être claire dans mon explication.

    J'ai fait plusieurs traitement pour en venir à obtenir une table qui ressemble à ceci :

    Periode..Stock..Ordres....Besoins....Total
    ----------------------------------------
    1...........53.......40........8.............?
    2...........53.........0........8.............?
    3...........53........20.......15............?

    Stock, Ordres et Besoins représentant des quantités

    Bon, la formule que je dois appliquer pour trouver le total est la suivante :

    Stock + Ordres - Besoin = Total

    Le hic qui fait que je suis ici : Le total de la periode précédente constitue le stock de la période suivante...

    Je pars la première periode avec le stock que je trouve dans une table X. Par la suite, je dois obtenir ceci :

    Periode..Stock..Ordres....Besoins....Total
    ---------------------------------------
    1...........53.......40........8..........85
    2...........85.........0........8..........77
    3...........77........20.......15........82

    Ma table contient 19'000 enregistrements. Je suis vraiment confuse sur la manière d'aborder ce problème. Des curseurs? 19'000 enregistrements, ça ne sera pas long? La récursivité? Ouch, j'suis perdue! Je sais qu'est-ce que la récursivité mais j'ai toujours hais cette méthode....

    J'attend vos suggestions sur la manière d'aborder le problème. Merci beaucoup, je suis vraiment confuse en ce moment.....

  2. #2
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    Prenons les choses de manière ensembliste : le stock de chaque période est égal au stock initial + la somme de tous les Ordres précédents - la somme de tous les Besoins précédents.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT T1.Periode, 
      55 + SUM(T2.Ordres) - SUM(T2.Besoins) AS Stocks,
      T1.Ordres,
      T1.Besoins,
      55 + SUM(T2.Ordres) - SUM(T2.Besoins) 
        + T1.Ordres - T1.Besoins AS Total
    FROM ta_table T1
      INNER JOIN ta_table T2 ON T1.Periode > T2.Periode
    GROUP BY T1.Periode, T1.Ordres,  T1.Besoins
    En théorie, c'est supposé être bcp + rapide que le curseur... Si ça marche, fais ton UPDATE à partir de cela. Sinon, oublie la récursivité et fais un curseur !

  3. #3
    Membre habitué Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Points : 144
    Points
    144
    Par défaut


    Ouh la la.... c'est vraiment brillant comme résultat... j'ai du l'ajuster un brin à ma réalité - ma clé contient plus que juste le numéro de période - mais Wâ, génial. Il ya juste qu'on perd ainsi la première période mais je la récupère d'une autre manière (avec une requête min(periode)) alors tout est A1!

    beaucoup pour ton aide, elle fut grandement appréciée!

    Baquardie

  4. #4
    Rédacteur/Modérateur

    Avatar de Antoun
    Homme Profil pro
    Architecte décisionnel
    Inscrit en
    Octobre 2006
    Messages
    6 284
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte décisionnel
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2006
    Messages : 6 284
    Points : 11 741
    Points
    11 741
    Par défaut
    Oui, celle-là je la mets dans mon prochain livre

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/06/2009, 19h24
  2. Réponses: 3
    Dernier message: 02/02/2007, 14h30
  3. Réponses: 6
    Dernier message: 05/12/2006, 10h28
  4. Réponses: 9
    Dernier message: 20/09/2006, 15h58
  5. [SQL Server]Recupération du résultat d'une procédure stockée
    Par navis84 dans le forum Bases de données
    Réponses: 8
    Dernier message: 04/04/2005, 20h53

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