IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

[SQL Server 8] Trouver une plage de date


Sujet :

Langage SQL

  1. #1
    Membre habitué Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Points : 144
    Points
    144
    Par défaut [SQL Server 8] Trouver une plage de date
    Bonjour
    Je ne savais pas quoi mettre pour mon titre puisque ma question est assez spécifique. Alors voila. J'ai ceci comme données :

    Client...ListePrix.......DateFin.........NoSemaine
    3022....CO..............20060117......3
    3022....2.................20060125......4
    3022....CO..............20060228......9
    3022....2.................20061231......52
    C'est un fichier de suivi d'historique de liste de prix par client. Donc, pour un client, je veux savoir quelle était sa liste de prix à un moment donné. La date est celle de fin..... donc, dans l'exemple donné, de - l'infini à 20060117, le client avait la liste de prix CO, de 20060118 a 20060225 la liste de prix 2, de 20060226 a 20060228 la liste de prix Co et de 20060301 a 20061231 la liste de prix 2.

    J'ai besoin d'obtenir une resultante par semaine..... Donc je voudrais une table contenant les nos de semaine 1 a 52 avec la liste de prix correspondante.

    Je me disais donc qu'il faudrait tout d'abord que je trouve les plage de date. J'aimerais une resultante de style :

    Client...ListePrix.......DateFin.........NoSemaine.....SemDebut.....SemFin
    3022....CO..............20060117......3....................1..................3
    3022....2.................20060125......4....................4..................4
    3022....CO..............20060228......9....................5...................9
    3022....2.................20061231......52..................10.................52.
    J'ai accès a une table contenant 365 enregistrements, un pour chaque journée de l'année (la date l'année le no de semaine etc).

    Je tourne en rond, depuis hier je fais plein d'essais erreur mais je ne trouve rien. Si vous avez des idées qui me permettraient de trouver la solution ce serait bien apprécié.

    J'espere que j'ai été claire dans mes explications....

    Je vous remercie à l'avance...

  2. #2
    Membre à l'essai
    Inscrit en
    Mars 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 24
    Points : 22
    Points
    22
    Par défaut
    Je crois ne rien pas tout avoir compris, de ton sujet,
    si tu pouvais synthétiser, un peu plus!
    Précises ton sgbd, stp, aussi!

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Points : 562
    Points
    562
    Par défaut
    Si tu veux avoir les prix pour chaque semaine, groupe les résultats par semaine à l'aide de date_format.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT *,date_format(date,'%x %v') as dt FROM table GROUP BY dt
    Pour les prix sur une plage de temps :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM table WHERE date>datedebut AND date<datefin
    Tu dit que tu as une table avec les n° des jours de l'année. A quoi te sert-elle ?

  4. #4
    Membre habitué Avatar de Baquardie
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2003
    Messages
    267
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2003
    Messages : 267
    Points : 144
    Points
    144
    Par défaut
    Bon à force de taponner j'ai fini par trouver une solution... j'ai par contre oublié mon idée de transformer ma table source. Je me suis plutôt dit que j'allais utiliser la table tel quel et essayer de faire avec...

    jeremya - par exemple, ma vrai table source n'est constitué que de date, alors pour savoir les numéros de semaine je fais un join sur cette table et obtient les no semaines pour ensuite faire un joint sur mes tables de ventes...

    xwawa - Désolé j'étais tellement absorbée dans la composition d'un message clair que j'ai oublié de dire l'essentiel... je travaille avec sql server 8 dans le query analyser. Je programme des stored procedure.

    Bon alors voila, en gros ce que je fais.... j'effectue une première lecture jointé entre ma table de vente et ma table de liste de prix, en allant chercher, pour un client et un no de semaine, la valeur minimum de date lorsque la semaine de vente est plus petite que la semaine de fin....

    Puis, j'utilise la résultante pour faire un join sur la date pour obtenir ma liste de prix...

    C'est un peu tordu.... mais je n'ai pas trouvé d'autres solutions... L'idéal serait quand même d'avoir une table source avec des date de debut... mais ce n'est pas moi qui fait la table, on m'a donné ça de meme!

    Merci pour votre soutien.....


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [sql server 2005] Restauration à une date données
    Par Herlece dans le forum Administration
    Réponses: 5
    Dernier message: 08/02/2011, 12h06
  2. Réponses: 2
    Dernier message: 08/04/2008, 19h11
  3. [Sql Server] Fusion d'une date et d'une heure
    Par Invité dans le forum Langage SQL
    Réponses: 4
    Dernier message: 20/07/2005, 14h55
  4. Réponses: 15
    Dernier message: 20/12/2004, 10h25
  5. Sélection d'une plage de dates
    Par Bouanda dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 24/10/2004, 20h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo