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

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Points : 50
    Points
    50
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Quelle version de SQL Server utilisez-vous ?

    @++

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Points : 50
    Points
    50
    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 858
    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 858
    Points : 52 996
    Points
    52 996
    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 +

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Points : 50
    Points
    50
    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 émérite

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

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

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 858
    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 858
    Points : 52 996
    Points
    52 996
    Billets dans le blog
    6
    Par défaut
    C'est désespérant de donner des perles au cochons ! Et en plus ça me fait perdre mon temps !

    A +

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

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Points : 50
    Points
    50
    Par défaut
    Au temps pour moi.
    J'avais juste fait une erreur en l'adaptant, car chez moi celle-ci est un peu plus compliquée car imbriquée dans une autre ce qui faisait que c'est la somme totale de chaque magasin qui s'affichait. Désolé !

    Ceci dit dit ça ne doit pas empêcher de rester poli... Merci en tout cas ça marche nickel !

+ 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