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

Développement SQL Server Discussion :

Equivalent fonctions lead (ORACLE) pour SQL SERVER


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Par défaut Equivalent fonctions lead (ORACLE) pour SQL SERVER
    Bonjour,

    ça fait 2 jours que je planche dessus, je cherche un moyen de faire l'équivalent de la fonction lead en ORACLE.

    Voilà ce que je veux faire: J'ai une liste d'articles classés par magasin, et je souhaite faire pour chaque ligne un cumul de la valeur total de ceux-ci. L'exemple suivant devrait être plus clair :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Magasin     Article     Nombre   Prix_unit   Prix_total   valeur_cumulée(par magasin)
     Mag1        Art1         5           10           50            50
     Mag1        Art2         8           25          200           250
     Mag1        Art3         3           12           36           286
     Mag2        Art1         2           10           20            20
     Mag2        Art4        10           30          300           320
     Mag3        Art5         3            3            9             9
    Voilà c'est la dernière colonne que je souhaite. Pour chaque magasin, je veux le cumul du prix total de chaque article.
    Avec ORACLE la fonction lead permet de récupérer une valeur de la ligne précédente mais en revanche en SQL pas moyen de trouver une solution

    Merci de votre aide

  2. #2
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Quelle version de SQL Server utilisez-vous ?

    @++

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Par défaut
    Bonjour,

    Ah oui pardon Il s'agit SQL SERVER 2008 R2 (build : 10.50.1600)

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 995
    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 995
    Billets dans le blog
    6
    Par défaut
    Moi, il m'a fallut 9 minutes en incluant le jeu d'essais que vous n'avez pas fournit en ne respectant pas la charte de postage !!!!

    Le jeu d'essai pas fournit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    CREATE TABLE MatableALaCon
    (Magasin      CHAR(4),
     Article      CHAR(4),
     Nombre       INT,
     Prix_unit    INT)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     INSERT INTO MatableALaCon
     VALUES 
     ('Mag1', 'Art1', 5, 10),
     ('Mag1', 'Art2', 8 , 25),
     ('Mag1', 'Art3', 3, 12),
     ('Mag2', 'Art1', 2, 10),
     ('Mag2', 'Art4', 10, 30),
     ('Mag3', 'Art5', 3, 3)
    La solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT *, Nombre * Prix_unit,
           (SELECT SUM(Nombre * Prix_unit)
            FROM   MatableALaCon AS T1
            WHERE  T1.Magasin = T0.Magasin
              AND  T1.Article <= T0.Article)
    FROM   MatableALaCon AS T0
    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/ * * * * *

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Par défaut
    Merci pour votre réponse SQLpro.

    Désolé pour le jeu d'essais que je n'ai pas fourni, je n'avais en effet pas lu la charte je ferais mieux la prochaine fois.

    Concernant la requête ce n'est pas tout à fait le résultat que je souhaite.
    J'aimerai pour chaque ligne, incrémenter au fur et à mesure le prix total de la ligne précédente, et non pas afficher directement la valeur totale du magasin.
    Celle-ci s'afficherait donc à la dernière ligne du magasin.

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Ca doit être le cas avec la requête qu'a fournie SQLPro.

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

Discussions similaires

  1. Equivalent de WITH ORACLE en SQL Server
    Par The eye dans le forum MS SQL Server
    Réponses: 11
    Dernier message: 15/04/2009, 19h12
  2. [CSV] Fonction PHP pour SQL Server
    Par wolflinger dans le forum Langage
    Réponses: 2
    Dernier message: 17/05/2006, 12h57
  3. Choisir Oracle ou Sql-Server pour les transactions ?
    Par Roronoa01 dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 06/11/2005, 22h41
  4. Equivalent de la fonction NVL sous oracle en SQL-server
    Par MorbidAngel dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 27/09/2005, 10h50

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