Comparaison de record dans une meme table à des dates différentes

Résolu
cs_Jaxom Messages postés 29 Date d'inscription lundi 13 mai 2002 Statut Membre Dernière intervention 22 mars 2013 - 7 déc. 2010 à 16:23
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-
A voir également:

2 réponses

aieeeuuuuu Messages postés 698 Date d'inscription jeudi 16 janvier 2003 Statut Membre Dernière intervention 20 mai 2011 3
8 déc. 2010 à 11:34
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...
3
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,

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-
0
Rejoignez-nous