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

MS SQL Server Discussion :

Regroupement date par semaine


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 298
    Par défaut Regroupement date par semaine
    Bonjour,

    J'ai des données et j'aimerais les regrouper par semaine:
    Voici un exemple:

    Si je prend pour le mois précédent (septembre), il y a 5 semaines (de la 35 à la 39) voici ce que j'aimerais obtenir au final:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Week - Nombre
    35 - 102
    36 - 100
    37 - 120
    38 - 115
    39 - 120
    En sachant que la semaine 35 comprend du 30 août au 5 septembre et que la semaine 39 comprend du 27 septembre au 3 octobre.

    Pour que vous comproniez mieux, j'ai par exemple ces données là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Date - Nombre
    '2010-09-02' - 52
    '2010-09-03' - 50
    Avez-vous compris ce que j'aimerais ?

    Merci beaucoup à la personne qui saura me sauver le coup..

    P.S: Je tourne sur SQL Serveur 2008

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    sans nous donner le point de départ en respectant la charte de postage cela va être dur ! http://www.developpez.net/forums/d96...vement-poster/
    Sinon faites un group by sur le n° de semaine.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 298
    Par défaut
    Voici mes données :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    VALUES ('2010-09-02', 52)
    VALUES ('2010-09-03', 50)
    VALUES ('2010-09-06', 50)
    VALUES ('2010-09-08', 50)
    VALUES ('2010-09-28', 120)
    J'aimerais obtenir ce résultat là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Week - Nombre
    35 - 102
    36 - 100
    37 - 0
    38 - 0
    39 - 120
    Le 2 et 3 septembre font partie de la 35ème semaine.
    Le 6 et 8 septembre de la 36ème semaine.
    Le 28 septembre de la 39ème semaine.

    Est ce un peu plus claire pour vous?
    Désolé de ne pas vous avoir donné les infos nécessaires.

  4. #4
    Membre Expert Avatar de Jinroh77
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2006
    Messages
    1 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : Février 2006
    Messages : 1 964
    Par défaut
    Vous n'avez pas précisé, mais votre champ est-il bien de type DATE ?
    Dans ce cas vous avez simplement un datepart avec un argument week.
    Sinon une table de dates avec les informations qu'il vous faut et c'est parfait pour un group by.

  5. #5
    Expert confirmé
    Avatar de mikedavem
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2005
    Messages
    5 450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Ain (Rhône Alpes)

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

    Informations forums :
    Inscription : Août 2005
    Messages : 5 450
    Par défaut
    En illustrant un peu les propos de Jinroh77 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    WITH T AS
    (
     SELECT * 
     FROM (
    	VALUES ('20100902', 52),('20100903', 50),
    		   ('20100906', 50),('20100908', 50),
               ('20100928', 120)
           ) AS V([date], Nombre)
     
     )
     SELECT 
    	DATEPART(wk, [date]) AS [week],
    	SUM(nombre) AS nombre
     FROM T
     GROUP BY DATEPART(wk, [date]);
    Cependant vous ne pourrez pas avoir l'information concernant les semaines qui n'existent pas dans votre table.

    ++

  6. #6
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    D'où l'idée de créer une table de dates, ce qui rendra la requête plus simple à exprimer et les performances meilleures

    @++

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

Discussions similaires

  1. [PHP 5.3] Manipulation de date par semaine
    Par FabaCoeur dans le forum Langage
    Réponses: 7
    Dernier message: 23/04/2012, 19h41
  2. Grouper des dates par semaines
    Par Nour08 dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 29/07/2011, 10h43
  3. [Date] Grouper des dates par semaine
    Par KooKoolen dans le forum Langage
    Réponses: 3
    Dernier message: 06/12/2006, 11h05
  4. tri des dates par semaine
    Par syldudu dans le forum Access
    Réponses: 17
    Dernier message: 10/10/2006, 11h27
  5. [CR]grouper des dates par semaines, mais semaines FR !
    Par neo.51 dans le forum SAP Crystal Reports
    Réponses: 11
    Dernier message: 18/05/2004, 20h43

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