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 :

Requête valeur maximum selon mois


Sujet :

Langage SQL

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Requête valeur maximum selon mois
    Bonjour à tous

    je ne parviens pas à trouver la reqûete permettant de connaitre la consommation d'un véhicule entre le mois en cours et le mois précédent

    je m'explique :

    j'ai une table (cf pièce jointe)

    j'aimerai par ID_CODCOM sélectionner la valeur max (NU_VAL) du mois en cours et la soustraire à la valeur max (NU_VAL) du mois précédent afin d'obtenir un kilométrage.

    Avez vous une idée ?

    D'avance merci pour votre aide
    Images attachées Images attachées  

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    je dirais un truc du genre :

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    -- Max du mois en cours
    select id_codcom, max(nu_val) mois
    from matable
    where convert(varchar(6), dt_val, 112) = convert(varchar(6), dbo.GetDate(), 112)
    group by id_codcom
     
    -- Max du mois précédent (enfin, max pour mois < mois en cours, on sais jamais, si nu_val n'a pas bougé pendant plus de 30 jours...)
    select id_codcom, max(nu_val) mois_precedent
    from matable
    where convert(varchar(6), dt_val, 112) < convert(varchar(6), dbo.GetDate(), 112)
     
    -- Max du mois précédent (pour de vrai)
    select id_codcom, max(nu_val) mois_precedent
    from matable
    where convert(varchar(6), dt_val, 112) = convert(varchar(6), dateadd('m', -1, dbo.GetDate(), 112)
     
    -- Du coup, la requête finale
    select id_codcom, sum(val) diff
    from
    (
    select id_codcom, max(nu_val) mois
    from matable
    where convert(varchar(6), dt_val, 112) = convert(varchar(6), dbo.GetDate(), 112)
    group by id_codcom
    union all
    select id_codcom, max(nu_val) * -1 mois_precedent
    from matable
    where convert(varchar(6), dt_val, 112) < convert(varchar(6), dbo.GetDate(), 112)
    )
    group by id_codcom
    Eventuellement, y'a peut-être plus performant, mais bon, ça dépend après du nombre de lignes et de la fréquence de ton besoin
    On ne jouit bien que de ce qu’on partage.

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Ça dépend aussi du SGBD.

  4. #4
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 153
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 153
    Points : 7 403
    Points
    7 403
    Billets dans le blog
    1
    Par défaut
    Effectivement, je suis parti du principe que c'était du SQL Server.

    La syntaxe sera équivalente sous Oracle en remplaçant les blocs CONVERT par des to_date(champ, 'YYYYMM')

    Pour les autres SGBD, je vous laisse regarder la doc pour récupérer votre date au format YYYYMM (ce qui est le plus simple, pas forcément le plus performant ! mais c'est toujours bien de penser à celui qui va faire la maintenance derrière )
    On ne jouit bien que de ce qu’on partage.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2011
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Merci
    je vais tester tout ça

    Pour info c'est bien du sql server

Discussions similaires

  1. Réponses: 3
    Dernier message: 31/07/2014, 19h13
  2. identity valeur maximum
    Par hatifnatte dans le forum DB2
    Réponses: 5
    Dernier message: 25/01/2007, 18h18
  3. [SQL] Requête dificile à réaliser (pour moi)
    Par gunth dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/06/2006, 06h48
  4. [C#] ProgressBar: Problème Valeur maximum
    Par LE NEINDRE dans le forum Windows Forms
    Réponses: 2
    Dernier message: 24/05/2006, 18h23

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