begin process at 2012 05 26 11:44:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

SQL Server, MSDE, SQL Express

 > 

Requêtes

 > 

Between un chouilla complexe lol


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Between un chouilla complexe lol

lundi 22 mai 2006 à 15:41:14 | Between un chouilla complexe lol

chamallow

Bonjour,

Je cherche depuis un petit moment comment faire une certaine requpete mais je bloque

En fait, j'ai une table qui contient plusieurs champs dont un nombre de poses, un numéro de semaine et l'année tous deux associés à ce nombre de poses. Ce que je voudrais c'est faire le cumul de ce nombre de poses entre la plus vieille date et la plus récente, ce qui revient à faire le cumul du nombre de poses entre la plus petite semaine pr la plus petite année et la plus grande semaine de la plus grande année.

Et là je bloque, je vois plus comment faire : j'avais essayer entre la semaine la plus petite et la plus grande et l'année la plus petite et la plus grande, mais bien sûr ça ne donne pas ce que je souhaite, mais le cumul entre les deux semaines pour chaque année.

Quelqu'un voit-il une solution svp? Merci d'avance
lundi 22 mai 2006 à 20:17:35 | Re : Between un chouilla complexe lol

crilun



crilun

fait une concatenation de ton champ annee et semaine, et retransforme les en date tu as plein de fonction SQL pour ca,
tu recupere le 1er jour de ta semaine de depart et le denier jour de ta semaine de fin,
apres tu fais min() et max() pour tes champs dates concatener.
et tu fait pareil pour ta clause where.

mais pourquoi tu fais pas  simplement un SUM() de toutes tes poses car si tu prends entre la plsu vieille date et la plus recente obligatoirement tu as tout les enregistrements?
mardi 23 mai 2006 à 08:03:49 | Re : Between un chouilla complexe lol

chamallow

Ok, j'avais carrément zappé cette solution ! Je vais essayer.
Et si je fait la somme de toutes les poses entre 2 dates, c'est pour pas avoir tous les enregistrements en fait, parce que c'est entre la plus vieille et récente date d'une commande (et pas de toutes!).
mardi 23 mai 2006 à 08:09:41 | Re : Between un chouilla complexe lol

chamallow

Euh petite précision, quand tu dis " fait une concatenation de ton champ annee et semaine", tu veux que je crées un nouveau champ dans la base, parce que je voulais éviter en fait de devoir en rajouter. Je voulais tout faire dans la requête.
mardi 23 mai 2006 à 11:56:38 | Re : Between un chouilla complexe lol

crilun



crilun
non je veut dire dans la requete

SELECT
          CAST(annee AS VARCHAR(4))+CAST(semaine AS VARCHAR(2)) AS ANNEESEMAINE

je dois partir en cours la, je te ferais  un select ce soir qui te renvoi la date du lundi de ta semaine pour ton lundi de la semaine de depart et le vendredi pour ta semaine de fin.
      
mardi 23 mai 2006 à 13:37:27 | Re : Between un chouilla complexe lol

chamallow

Réponse acceptée !
Et bien en fait j'y suis arrivée :)

Ce que j'ai fait c'est que j'ai fait la somme des poses pour les dates qui se situent entre ma date de début et de fin, et pour transformer ma semaine et année en date, j'ai utilisé dateadd(day,semaine*7,1/1/annee) (en concaténant l'année avec la chaine '01/01' pour que je parte du 1er janvier de l'année en question, et je lui ajoute le nombre de jours nécessaire pour arriver à la bonne semaine, d'où le semaine*7).

En tout cas, merci pour ton aide :)
mardi 23 mai 2006 à 17:12:26 | Re : Between un chouilla complexe lol

crilun



crilun
tu peut faire dateadd(week,semaine,'01/01/'+annee) aussi
mais attention tu vas avoir un pb avec ca
tu ne te retrouve pas calé sur un lundi forcement aussi la,
car si ton année commence un jeudi tu auras le jeudi de la semaine,
de plus le premier jour de l'annee n'est pas forcement dans la premiere année de la semaine,
la premiere année de la semaine est la premiere qui contient un jeudi.
enfin si dans ton cas ca ne te pose pas de pb ok, si jamais si previens moi je te ferais ton select pour te caler sur le lundi de ta semaine.

mardi 23 mai 2006 à 18:54:41 | Re : Between un chouilla complexe lol

chamallow

Ok, merci beaucoup, apparemment pour l'instant ça ne me pose pas vraiment de problème, donc ça va. Mais si jamais ça va pas, je te le dirais :)
lundi 12 juin 2006 à 18:22:57 | Re : Between un chouilla complexe lol

Malkuth

Membre Club

Salut,
En fait je pense que ce petit code serait suffisant le tout est dans la définition de la borne inférieur et supérieur, Je pense que c'est plus rapide car sans fonction suplémentaire, pas de probléme de premier jour de la semaine ou de premier jour de l'année. Si tu le test dis moi si ca va plus vite.
SELECT 
   SUM(Pose) 
FROM 
   TABLE
WHERE 
   (Année >@AnneDebut OR (Année=@AnneDebut AND Semaine >=@SemaineDebut))
   AND
   (Année <@AnneFin OR (Année=@AnneFin AND Semaine <=@SemaineFin))

Biensûr on remplacera @AnneDebut,@SemaineDebut,@AnneFin,@SemaineFin par les valeurs qu'il faut...



Cette discussion est classée dans : nombre, grande, année, semaine, poses


Répondre à ce message

Sujets en rapport avec ce message

Pb Date (1ère semaine de l'année) [ par Herminator ] Bonjour à tous, J'ai un petit problème de date, lorsque j'exécute la requête suivante : SELECT DATEPART(ww,GETDATE()), GETDATE() Sql Server me renvo Criteres de requetes en fonction d'une période (année + mois) [ par ronando ] Bjr à tous,J'ai un petit souci, j'ai une table facture (n°,montant,annee,mois)je laisse le choix a l'utilisateur d'afficher les factures entre une pér insertion de nombre de 1 à N [ par ftug ] Bonjour,j'aimerai inserer dans une table des nombre de 1 à N avec le moins de requetes possible ( le serveur SQL est déjà bien chargé )pour l'instant Demander a generer un nombre precis de lignes dans reporting services [ par misterhtml ] bonjour, je m'initie dans le cadre de mon stage a Reporting services et je voudrais a partir d'une date de debut et une date de fin, recuperer le nomb retourner valeur des champs et le nombre d'enregistrments correspondant dans un table liée [ par the_mouette ] Bonjour tout le monde!bon, le titre n'étant pas très clair, je vais essayer d'expliquer mieux :de manière simple, j'ai une table messages (disons ID_M pbm avec la requete SELECT [ par goueg83460 ] bonjour,je fait un programme qui lit dans une table d'une base de donnée. Je veut vérifier les disponibilités. Pour cela je lance une requete qui se p Nombre de réponse retourné en ADO [ par Dyr3e ] bonjour, j'aimerai savoir comment je pourrais obtenir le nombre de réponse retourner en ADO ( avec asp ) sur une requete.merci d'avance. Nombre de jours entre 2 dates [ par jakata ] Bonjour tout le monde,J'aimerais calculer le nombre de jours qu'il y a entre deux dates entrées en paramètre dans une fonction.Si quelqu'un a une idée aide pour une requete [ par njo80 ] J'ai dans une table plusieurs colonnes, dont une NUM, INS et DATEJe dois compter  le nombre de jour entre de  date.les NUM vont en s'incrémentant et p Restore dump [ par Zylott ] Bonjour,je souhaiterai savoir s'il existe un moyen de connaitre sous SQL server 2000/2005 :soit à partir de l'interface, soit en procédure stockée.1/


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,530 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales