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

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

Votre réponse

2 réponses

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

Merci aieeeuuuuu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 93 internautes ce mois-ci

Commenter la réponse de aieeeuuuuu
cs_Jaxom 29 Messages postés lundi 13 mai 2002Date d'inscription 22 mars 2013 Dernière intervention - 8 déc. 2010 à 14:29
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.