Comment recuperer la date du 1er jour de la semaine ??
sosou80
Messages postés17Date d'inscriptionjeudi 9 novembre 2006StatutMembreDernière intervention26 juin 2008
-
11 mars 2008 à 15:53
sosou80
Messages postés17Date d'inscriptionjeudi 9 novembre 2006StatutMembreDernière intervention26 juin 2008
-
13 mars 2008 à 16:18
Bonjour tous le monde ,
Voila mon petit probléme : j'ai une table temporaire construite dans une procédure stockée comme suit:
#tab_temp( Jour,Mois,Année,Semaine, nb_commande) et voila comme exemple les données de cette table :
Jour||Mois||Année||Semaine||nb_commande
1 1 2007 1 20
2 1 2007 1 15
.
.
7 1 2007 1 54
8 1 2007 2 68
9 1 2007 2 85
.
.
Et mnt voila ma question : Comment récuperer la somme des commande groupée par semaine, avec la date de début de chaque semaine et la date de fin de cette semaine ???.
en se basant sur l'exemple cité au début voila le résultat désirée :
La date en semaine || nb_commande
du 1/1/2007 au 7/1/2007 20+15+....=somme de toutes les commandes passées durant cette semaine
du 8/1/2007 à 14/1/2007 68+85+....=somme de toutes les commandes passées.
.
.
.
.
.
si quelqu'un à une idée ca va me permettre d'avancer !!
je ss d'acord avec que cette requette va recuperer kelke chose de ce type :
semaine || nb_commande
----------------------------------------------
1 20+15+....=somme de toutes les commandes passées durant cette semaine
2 .........................
3 ......................
4
.
.
Mais ce que je souhaite à la sortie est de là !!!!
Voilà à nouveau ce que je souhaite :
La date en semaine || nb_commande
----------------------------------------------------------------
du 1/1/2007 au 7/1/2007--------> 20+15+....=somme de toutes les commandes passées durant cette semaine.
du 8/1/2007 à 14/1/2007-------->68+85+....=somme de toutes les commandes passées durant cette semaine.
.
autrement dit je veux la date complet de la semaine :
-du 1/1/2007 (date de débute de la semaine )
-au 7/1/2007 (date de fin de la semaine)
J'espere que j'etai clair
Et merci encore pour votre réponse
Vous n’avez pas trouvé la réponse que vous recherchez ?
Arthenius
Messages postés1182Date d'inscriptionmercredi 21 janvier 2004StatutMembreDernière intervention 6 septembre 201114 13 mars 2008 à 13:55
SELECT semaine as ma_semaine_encours, (select min(date) from nom_de_ta_table where semaine = ma_semaine_encours), (select max(date) from nom_de_ta_table where semaine = ma_semaine_encours), sum(nb_commande) FROM nom_de_ta_table
GROUP BY semaine;
sosou80
Messages postés17Date d'inscriptionjeudi 9 novembre 2006StatutMembreDernière intervention26 juin 2008 13 mars 2008 à 16:13
En faite ta requete n'a pas fonctionnée , par contre j'ai réussi à le faire à l'aide du curseur ,
pour ceux qui sont intéressés par ce probléme, voila ma solution :
voici ma table #Table_add(
J (jour)
,
M (jour)
,
A (année)
,
nb (nombre de commande)
,
nb_semaine
), pour mon exemple , c'est une table construite dans une table temporaire aprés plusieurs traitement,
sachant que J,M,A : sont de type int ( dans mon cas bien sur)
Arrangez-vous pour que la 1ere ligne de votre table, commence par la date d'un lundi (c'est ce que j'ai fait moi-même), et la derniére ligne de votre table termine par la date d'un dimanche, ce qui est tout a fait logique lorsqu'on veut des statistiques par semaine.
declare@somme_nb int
declare
@compteur int
declare
@var_date varchar(30)
declare @jour int
declare@mois int
declare @annee int
declare @nb int
declare @nb_semaine int
declare curseur_add_semaine
CURSOR
FOR
select J
,M
,A
,nb
, nb_semaine
from #Table_add
CREATE
TABLE #Table_add_new
(date
varchar(30
),nb_add
int)
OPEN curseur_add_semaine
FETCH NEXT
FROM curseur_add_semaine
INTO @jour
,@mois
,@annee
,@nb
,@nb_semaine
set @somme_nb
=@nb
set @compteur
=1
set @var_date
=cast(@jour
as
varchar(2
))+'/'+cast(@mois
as
varchar(2
))+'/'+cast(@annee
as
varchar(4
))
WHILE
@@FETCH_STATUS
= 0
begin
if @compteur
=7
begin
set @var_date
=@var_date
+' au '+cast(@jour
as
varchar(2
))+'/'+cast(@mois
as
varchar(2
))+'/'+cast(@annee
as
varchar(4
))
insert
into #Table_add_new
(date
,nb_add
)
values(@var_date
,@somme_nb
)
FETCH NEXT
FROM curseur_add_semaine
INTO @jour
,@mois
,@annee
,@nb
,@nb_semaine
set @somme_nb
=@nb
set @compteur
=1
set @var_date
=cast(@jour
as
varchar(2
))+'/'+cast(@mois
as
varchar(2
))+'/'+cast(@annee
as
varchar(4
))
end
else
begin
FETCH NEXT
FROM curseur_add_semaine
INTO @jour
,@mois
,@annee
,@nb
,@nb_semaine
set @somme_nb
=@somme_nb
+@nb
set @compteur
=@compteur
+1
end
end
CLOSE curseur_add_semaine
DEALLOCATE curseur_add_semaine
il ne reste qu'à faire un dernier select vers la nouvelle table temporaire:
select date
as
'La date en semaine',nb_add
'Le nombre de commandes passées durant cette semaine'
from #Table_add_new
et voila c'est fait , mais je ne sait coté optimisation est ce que c'est la meilleur solution ??, car j'utilise une autre table temporaire !!
l'essentiel pour moi mnt, c'est que j'ai le résultat souhaitée