Comparaison de record dans une meme table à des dates différentes [Résolu]

Messages postés
29
Date d'inscription
lundi 13 mai 2002
Statut
Membre
Dernière intervention
22 mars 2013
- - Dernière réponse : cs_Jaxom
Messages postés
29
Date d'inscription
lundi 13 mai 2002
Statut
Membre
Dernière intervention
22 mars 2013
- 8 déc. 2010 à 14:29
Bonjour à tous,

J'ai une table avec les resultats de plusieurs commerces par jour; ma table ressemble à ceci:

Id, date, Id_Commerce, CA, NbreClient

Il faudrait que je puisse sortir une table qui me donnerait le CA et les clients pour une date et la même l'an passé:

id, Id_Commerce, date_Today, CA_Today, NbreClient_Today, date_AnPasse CA_AnPasse, NbreClient_AnPasse

Il faut bien entendu tenir du compte du fait qu'un commerce peut être fermé et donc ne pas avoir de ligne du tout (pas encore ouvert l'an passé) ou fermé pour travaux (Ca et Client NULL)

N'étant pas tu tout un champion du sql, cette question me laisse perplexe.

Y aurait-il une âme charitable pour éclairer ma lanterne?

Merci d'avance.



-Perdu dans les méandres de la création virtuelle-
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
698
Date d'inscription
jeudi 16 janvier 2003
Statut
Membre
Dernière intervention
20 mai 2011
2
3
Merci
Bonjour

Deja, quel est votre SGBDR ?

Ensuite, voulez-vous comparer jour pour jour a partir de la date (par exemple le 8 decembre 2010 au 8 decembre 2009) ? attention ca n'aura pas forcement de sens, car vous risquez de comparer le CA d'un lundi avec celui d'un dimanche... il faudrait peut etre envisager de comparer par exemple :
Le lundi de la semaine 45 de 2010 au lundi de la semaine 45 de 2009.

mais cela depend de ce que vous voulez faire de chiffre ensuite...

pour ce qui est de la requete, je ferai une jointure externe (FULL OUTER JOIN) de votre table sur elle meme, avec comme condition de jointure, les conditions que vous aurez defini pour comparer jour pour jour par exemple ca donnerai :

SELECT T1.id_commerce, T1.CA, T2.CA
FROM MaTable T1
FULL OUTER JOIN MaTable T2 ON T1.id_commerce T2.ID_commerce AND T2.date DATEADD(YEAR, -1, T1.Date)
WHERE DATEPART(YEAR, T1.Date) = 2010


en adaptant le DATEADD et le DATEPART selon votre SGBDR
vous pouez aussi remplacer le 2010 en dur par un DATEPART sur l'annee en cours afin que votre requete fonctionne toujours en reference a l'annee en cours. La aussi ca depend de vos besoins...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 202 internautes nous ont dit merci ce mois-ci

Commenter la réponse de aieeeuuuuu
Messages postés
29
Date d'inscription
lundi 13 mai 2002
Statut
Membre
Dernière intervention
22 mars 2013
0
Merci
Bonjour,

Un grand merci pour votre réponse, c'est pile ce qu'il me fallait.

Concernant vos commentaire, j'avais un peu simplifié l'enoncé pour ne pas surcharger; mais effectivement, je travaille par semaine (lundi de la semaine 1 etc...) pour que les comparaisons restent cohérentes (je dois faire un reporting quotidien sur des chiffres de vente par jour de la semaine en cours. et j'ai besoin des records null d'un coté ou de l'autre pour pouvoir faire la différence entre CA Brut et CA comparable (magasin ouvert des 2 côtés).

Et comme j'obtiens une table avec la comparaison et les "trous", c'est parfait.

En pratique, j'ai fait ça:

SELECT T1.Resultat_Boucherie_Id, T1.Resultat_CA CA_AnPas, T2.Resultat_CA CA_Today FROM Tbl_Resultat T1 FULL OUTER JOIN Tbl_Resultat T2 ON T1.Resultat_Boucherie_Id T2.Resultat_Boucherie_Id AND T2.Resultat_Date '20101113' WHERE T1.Resultat_Date='20091114'

Et merci encore.

Jaxom

-Perdu dans les méandres de la création virtuelle-
Commenter la réponse de cs_Jaxom