Comment recuperer la date du 1er jour de la semaine ??

sosou80 Messages postés 17 Date d'inscription jeudi 9 novembre 2006 Statut Membre Dernière intervention 26 juin 2008 - 11 mars 2008 à 15:53
sosou80 Messages postés 17 Date d'inscription jeudi 9 novembre 2006 Statut Membre Dernière intervention 26 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  !!

Merci pour votre réponse

      

8 réponses

sosou80 Messages postés 17 Date d'inscription jeudi 9 novembre 2006 Statut Membre Dernière intervention 26 juin 2008
11 mars 2008 à 17:43
salut ,j'attend tjrs votre reponse !!!

sachant que je suis sur sql server 2005

merci encore
0
sosou80 Messages postés 17 Date d'inscription jeudi 9 novembre 2006 Statut Membre Dernière intervention 26 juin 2008
12 mars 2008 à 13:02
Bonjour,

Personne n'a une idée !! .
En faite j'ai trouvé comment le faire en passant par curseur, mais je préfére bien utiliser une requétte simple ??

J'attend tjrs votre réponse

Et merci
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
13 mars 2008 à 12:18
si ton N° de semaine est stocke dans ta table un bon vieux group by devrait faire l'affaire

SELECT semaine, sum(nb_commande) FROM nom_de_ta_table
GROUP BY semaine;

<hr />Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
0
sosou80 Messages postés 17 Date d'inscription jeudi 9 novembre 2006 Statut Membre Dernière intervention 26 juin 2008
13 mars 2008 à 12:31
Bonjour Arthenius,

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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
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;

un truc de ce genre ???

<hr />Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
0
Arthenius Messages postés 1182 Date d'inscription mercredi 21 janvier 2004 Statut Membre Dernière intervention 6 septembre 2011 14
13 mars 2008 à 13:56
bon elle marchera surement pas cette requete ...apres relecture

<hr />Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
0
sosou80 Messages postés 17 Date d'inscription jeudi 9 novembre 2006 Statut Membre Dernière intervention 26 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.

Donc ma table sera du genre:

J   ||  M      ||     A     ||    nb      ||       nb_semaine
-----------------------------------------------
1      1           2007         20               1
2      1           2007         15               1
 .      .            ......            ...   .         ..
 .      .            ......            ..               ..   
7      1          2007         45                1
8      1          2007         68                2
9      1          2007         85                2
.
.
.

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

Si vous avez d'autre solution n'hesitez pas

Cordialement
0
sosou80 Messages postés 17 Date d'inscription jeudi 9 novembre 2006 Statut Membre Dernière intervention 26 juin 2008
13 mars 2008 à 16:18
dslé j'ai pas pu inseré une capture écran de résultat
0
Rejoignez-nous