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

WinDev Discussion :

Sql : somme qte par année sur x dernières années [Généralités]


Sujet :

WinDev

  1. #1
    Membre actif
    Inscrit en
    Octobre 2013
    Messages
    274
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 274
    Points : 248
    Points
    248
    Par défaut Sql : somme qte par année sur x dernières années
    bonjour

    un problème que je peux résoudre en prog mais je cherche un moyen de l'optimiser par le biais d'une requête.

    soit un fichier de ligne d'expédition
    pour faire simple, voici une structure allégée.

    NumExpedition
    CodeArticle
    QteExpediee
    DateExpedition

    je voudrais par le biais d'une seule requête sql
    avoir la somme des qtés expédiées par an et pour certains articles passés en paramètre sur les 5 dernières années


    de manière à avoir un résultat
    codearticle/qte anneeN-4/qte anneeN-3/qte anneeN-2/qte anneeN-1/qte anneeN


    et idéalement avoir le mêem genre de résultat mais sur des périodes données en paramètre

    d'avanc merci du coup de main

  2. #2
    Invité
    Invité(e)
    Par défaut
    Si tu utilises SQL Server comme SGBD, tu veux regarder du côté de la fonction PIVOT : https://technet.microsoft.com/fr-fr/...ql.105%29.aspx

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 197
    Points : 12 772
    Points
    12 772
    Par défaut
    Bonjour,
    A traduire en SQL "WinDev", surtout le CASE mais c'est dans l'esprit:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select CodeArticle,sum(case when dateExpedition between '2011-01-01' and '2011-12-31' then qteexpediee else 0 end) as sum1,sum(case when dateExpedition between '2012-01-01' and '2012-12-31' then qteexpediee else 0 end) as sum1sum(case when dateExpedition between '2013-01-01' and '2013-12-31' then qteexpediee else 0 end) as sum1sum(case when dateExpedition between '2014-01-01' and '2014-12-31' then qteexpediee else 0 end) as sum1
    from LaTable
    Where CodeArticle in (1,2,3)
    Group by CodeArticle
    Evidemment il faut remplacer les dates et les codes articles par des paramètres pour rendre la requête dynamique.

    Tatayo.

  4. #4
    Membre actif
    Inscrit en
    Octobre 2013
    Messages
    274
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 274
    Points : 248
    Points
    248
    Par défaut
    Citation Envoyé par tatayo Voir le message
    Bonjour,
    A traduire en SQL "WinDev", surtout le CASE mais c'est dans l'esprit:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select CodeArticle,sum(case when dateExpedition between '2011-01-01' and '2011-12-31' then qteexpediee else 0 end) as sum1,sum(case when dateExpedition between '2012-01-01' and '2012-12-31' then qteexpediee else 0 end) as sum1sum(case when dateExpedition between '2013-01-01' and '2013-12-31' then qteexpediee else 0 end) as sum1sum(case when dateExpedition between '2014-01-01' and '2014-12-31' then qteexpediee else 0 end) as sum1
    from LaTable
    Where CodeArticle in (1,2,3)
    Group by CodeArticle
    Evidemment il faut remplacer les dates et les codes articles par des paramètres pour rendre la requête dynamique.


    Tatayo.
    bonjour
    merci, exactement ce qu'il me fallait !

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 74
    Points : 64
    Points
    64
    Par défaut
    fffttt, merci de nous présenter votre code qui a marché. Ce là nous devrait plus nous enseigner.
    Merci

  6. #6
    Membre actif
    Inscrit en
    Octobre 2013
    Messages
    274
    Détails du profil
    Informations forums :
    Inscription : Octobre 2013
    Messages : 274
    Points : 248
    Points
    248
    Par défaut
    Citation Envoyé par Gbedjanhoungbo Jean Voir le message
    fffttt, merci de nous présenter votre code qui a marché. Ce là nous devrait plus nous enseigner.
    Merci
    bonjour
    aucun intérêt dans le cas d'une requête. Cela est propre à chaque système. j'ai adapté ma requête à ce qu'avait proposé tatayo.

  7. #7
    Membre du Club
    Inscrit en
    Décembre 2006
    Messages
    74
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 74
    Points : 64
    Points
    64
    Par défaut
    Bonsoir
    Au fait mon problème était de voir comment remplacer les dates par des paramètres, donc à visé didactique.
    merci de mous éclairer
    merci

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

Discussions similaires

  1. [AC-2007] Recherche d'une année sur un champ par SQL
    Par mbo2 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 06/05/2013, 13h02
  2. Somme de colonne comme sur Sql Server
    Par Soulama dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 16/06/2010, 13h51
  3. Réponses: 2
    Dernier message: 20/02/2007, 10h29
  4. Réponses: 8
    Dernier message: 08/12/2006, 13h22
  5. les priviléges par défaut sur sql server!
    Par JauB dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 25/01/2006, 08h48

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