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 :

Requête SQL - Pb avec la clause GROUP BY


Sujet :

MS SQL Server

  1. #1
    Membre averti
    Profil pro
    Informaticien
    Inscrit en
    Février 2005
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Informaticien

    Informations forums :
    Inscription : Février 2005
    Messages : 18
    Par défaut Requête SQL - Pb avec la clause GROUP BY
    Bonjour,

    j'ai un pb avec une requête que je n'arrive pas à résoudre.
    J'ai une table Courrier qui est en relation avec une table Diffusion. J'ai besoin de ressortir par service le nb de diffusions en retard par période (0 à 10j, 10 à 20j,...).

    Ma requete focntione sous MySQL mais j'ai une erreur sous MSSQL
    La colonne 'D.YDIF_SYSID_SERVICE' n'est pas valide dans la liste de sélection parce qu'elle n'est pas contenue dans une fonction d'agrégation ou dans la clause GROUP BY.
    CI-dessous une partie de la requete :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    select 
     
    (select count(*) 
    from yfic_diffusion 
     
    where ( 
     
    (DATEDIFF(day,YDIF_SDTE_TRAITER_AVANT,getdate())>0 
    AND DATEDIFF(day,YDIF_SDTE_TRAITER_AVANT,getdate())>=((1-1)*10) 
    AND DATEDIFF(day,YDIF_SDTE_TRAITER_AVANT,getdate())<=((1)*10) ) 
     
    AND D.YDIF_SYSID_SERVICE=YDIF_SYSID_SERVICE 
     
    ) ) as interval_1 ,
    count(*) as nombre, YSER_SERVICE 
     
    FROM YFIC_Courrier 
     
    left outer join YFIC_service on YCOU_SYSID_SERVICE_UTIL = YSER_SYSID_SERVICE 
    left outer join YFIC_DIFFUSION D on YCOU_SYSID_COURRIER=D.YDIF_SYSID_COURRIER 
     
    GROUP BY YSER_SERVICE 
    ORDER BY YSER_SERVICE
    Si quelqu'un y voir un peu plus clair que moi

    Merci d'avance

    Jerome

  2. #2
    Membre Expert
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Par défaut
    Bonjour,

    le problème vient de la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AND D.YDIF_SYSID_SERVICE=YDIF_SYSID_SERVICE
    Tu cherches à créer une sous-requête dans le SELECT filtrée par la colonne D.YDIF_SYSID_SERVICE. Mais cette colonne ne fait pas partie de ton GROUP BY, donc elle ne peut être utilisée ici non agrégée.
    Tu as deux solutions : grouper aussi par YDIF_SYSID_SERVICE, ou faire qqch comme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    AND MIN(D.YDIF_SYSID_SERVICE)=YDIF_SYSID_SERVICE
    Si toutes les colonnes contenant le même YSER_SERVICE ont le même D.YDIF_SYSID_SERVICE

Discussions similaires

  1. Requête SQL dynamique avec nom de table dans une variable
    Par jonjack dans le forum SQL Procédural
    Réponses: 9
    Dernier message: 15/09/2011, 14h37
  2. requête sql paramétrée avec clause like et astérisque %
    Par adelneo dans le forum Bases de données
    Réponses: 8
    Dernier message: 21/01/2011, 18h10
  3. Réponses: 4
    Dernier message: 17/02/2007, 15h11
  4. Requete SQL croisée avec la clause Like
    Par Orgied dans le forum Langage SQL
    Réponses: 2
    Dernier message: 22/03/2006, 16h36
  5. [MySQL] probleme d'une requête SQL crée avec phpmyadmin
    Par ghita269 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 24/10/2005, 10h15

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