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 :

SQL: Group by champ datetime


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 23
    Par défaut SQL: Group by champ datetime
    Bonjour,

    je dois faire la somme des montants par jours par type, or le champ date contient également l'heure (datetime)
    donc lorsque je fais group by ddate il affiche plusieurs records pour la meme date du fait qu'il l'a considere comme une datetime différente



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
        dDate                         nMontant                 ntype
    30/04/2007 23:59:01           30.00                         0
    30/04/2007 23:55:01           70.00                         1
    30/04/2007 23:51:51           130.00                        3
    30/04/2007 23:50:25           240.00                        1
    30/04/2007 23:48:09           135.00                        1
    29/04/2007 23:18:09           135.00                        1
    29/04/2007 22:56:09           135.00                        2
    29/04/2007 20:25:09           135.00                        0
    29/04/2007 19:58:09           135.00                        1
    select sum(nMontant),ddate,ntype
    from Mytable
    group by ddate,ntype


    renvoie plusieurs fois la même date mais (avec l'heure differente) avec son total ce qui n'est pas bon !
    comment faire pour avoir comme résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    30/04/2007     445      1
    30/04/2007     130      3
    30/04/2007      30       0
    29/04/2007     270      1
    29/04/2007     135      1
    29/04/2007     135      0
    ...
    D'avance merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    240
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 240
    Par défaut
    Essaie ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select YEAR(ddate) as Annee, MONTH(ddate) as Mois, DAY(ddate) as Jour, ntype, sum(nMontant), 
    from Mytable
    group by YEAR(ddate), MONTH(ddate), DAY(ddate),ntype
    A+

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 23
    Par défaut
    Merci Phillipe !

    ca a l'air d'être ok :-)

  4. #4
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    298
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 298
    Par défaut
    Désolé de réouvrir cette discussion, mais j'ai exactement le même problème mais je ne trouve pas la solution à mon problème.

    La solution citée est bien, mais je ne veux pas afficher 3 champs différents, je veux qu'un seul champ, et qu'il soit regrouper par jour, sans les heures.

    Merci et désolé encore.
    Lucazzo

  5. #5
    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 : 43
    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
    Bonjour,

    Désolé de réouvrir cette discussion [...] Merci et désolé encore.
    Holà, pas de stress, on n'est ni pas au boulot, mais sur un forum

    Vous pouvez pour cela écrire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT		CONVERT(varchar(10), maDate, 103) AS jour
    		, SUM(uneColonneNumérique)
    FROM		dbo.uneTable
    GROUP BY	CONVERT(varchar(10), maDate, 103)
    Le problème de cette solution comme de celles qui ont été données précédemment, c'est qu'elles s'exécuteront dans un temps acceptable sur des tables de faible volumétrie, mais certainement pas sur des tables contenant de nombreuses lignes.
    Cela s'explique par le fait que SQL Server maintient des statistiques sur les valeurs des colonnes, mais pas sur les valeurs de fonctions retournées pour des valeurs de ces colonnes.

    Le mieux est donc de créer une table de dates

    @++

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

Discussions similaires

  1. renseigner un champ Datetime SQL
    Par r12005 dans le forum VB 6 et antérieur
    Réponses: 0
    Dernier message: 23/08/2011, 12h03
  2. GRoup by sur un champ datetime
    Par sadkat dans le forum Langage SQL
    Réponses: 2
    Dernier message: 16/02/2010, 17h55
  3. [SQL] Conversion du format d'un champ datetime
    Par jbtz64 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/02/2008, 09h17
  4. [SQL] Difference entre deux champs DATETIME
    Par syl2042 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/08/2007, 17h20
  5. Réponses: 3
    Dernier message: 10/08/2005, 11h11

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