Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/04/2011, 15h43   #1
Invité de passage
 
Homme
Administrateur systèmes et réseaux
Inscription : 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 : 0
Points : 0
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
Type de fichier : jpg table.JPG (57,5 Ko, 5 affichages)
sma49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 16h07   #2
Membre Expert
 
Homme Sylvain Devidal
Chef de projets Générix
Inscription : février 2010
Messages : 1 062
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Devidal
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

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

Informations forums :
Inscription : février 2010
Messages : 1 062
Points : 1 515
Points : 1 515
je dirais un truc du genre :

Code :
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
StringBuilder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 16h25   #3
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 442
Points : 10 442
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Ça dépend aussi du SGBD.
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 16h41   #4
Membre Expert
 
Homme Sylvain Devidal
Chef de projets Générix
Inscription : février 2010
Messages : 1 062
Détails du profil
Informations personnelles :
Nom : Homme Sylvain Devidal
Âge : 33
Localisation : France, Rhône (Rhône Alpes)

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

Informations forums :
Inscription : février 2010
Messages : 1 062
Points : 1 515
Points : 1 515
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 )
StringBuilder est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2011, 16h53   #5
Invité de passage
 
Homme
Administrateur systèmes et réseaux
Inscription : 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 : 0
Points : 0
Par défaut Merci

je vais tester tout ça

Pour info c'est bien du sql server
sma49 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h31.


 
 
 
 
Partenaires

Hébergement Web