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 :

[SQL2K] Syntaxe Group By


Sujet :

MS SQL Server

  1. #1
    Membre habitué
    Avatar de Oncle_Pete
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 246
    Points : 175
    Points
    175
    Par défaut [SQL2K] Syntaxe Group By
    Bonjour,

    Je dois inserer dans une table des calculs de montants et de quantites en fonction d'un code rubrique pour le trio salarie-operation-dateoperation
    j'ai pondu le SQL ci-dessous, ....

    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
    25
    26
    27
    28
    29
    30
    INSERT INTO cumulmhe (salarie, dateoper, libeloper, operation,  
    qtejou, montjou, heurejou, qteheu, montheu, heureheu, qtekm, montkm, qterepas, montrepas, qteaut1, montaut1, heureaut1, 
    qteaut2, montaut2, heureaut2, qteaut3, montaut3, heureaut3, libre1, libre2, top1)
     
    SELECT salarie, dateoper, libeloper, codeoper, 
    -- les jou
    (SELECT SUM(taux) FROM lignemhe WHERE rubrique = 1010 and taux <> null GROUP BY salarie, codeoper, dateoper), 
    (SELECT SUM(montant) FROM lignemhe WHERE rubrique = 1010 and montant <> null GROUP BY salarie, codeoper, dateoper), 
    (SELECT SUM(base) FROM lignemhe WHERE rubrique = 1010 and base <> null GROUP BY salarie, codeoper, dateoper), 
     
    -- les heu
    (SELECT SUM(taux) FROM lignemhe WHERE rubrique = 9655 and taux <> null GROUP BY salarie, codeoper, dateoper), 
    (SELECT SUM(montant) FROM lignemhe WHERE rubrique = 9655 and montant <> null GROUP BY salarie, codeoper, dateoper), 
    (SELECT SUM(base) FROM lignemhe WHERE rubrique = 9655 and base <> null GROUP BY salarie, codeoper, dateoper), 
     
    -- les km
    (SELECT SUM(base) FROM lignemhe WHERE rubrique = 8100 and base <> null GROUP BY salarie, codeoper, dateoper), 
    (SELECT SUM(montant) FROM lignemhe WHERE rubrique = 8100 and montant <> null GROUP BY salarie, codeoper, dateoper), 
     
    -- les repas
    (SELECT SUM(base) FROM lignemhe WHERE rubrique = 8110 and base <> null GROUP BY salarie, codeoper, dateoper), 
    (SELECT SUM(montant) FROM lignemhe WHERE rubrique = 8110 and montant <> null GROUP BY salarie, codeoper, dateoper), 
     
    -- les aut1
    (SELECT SUM(taux) FROM lignemhe WHERE rubrique not in (1010, 9655, 8100, 8110) and taux <> null GROUP BY salarie, codeoper, dateoper), 
    (SELECT SUM(montant) FROM lignemhe WHERE rubrique not in (1010, 9655, 8100, 8110) and montant <> null GROUP BY salarie, codeoper, dateoper),
    (SELECT SUM(base) FROM lignemhe WHERE rubrique not in (1010, 9655, 8100, 8110) and base <> null GROUP BY salarie, codeoper, dateoper),0,0,0,0,0,0,'','',''
     
    FROM lignemhe
    GROUP BY salarie, codeoper, dateoper

    ... mais le serveur me renvoie un message m'indiquant que plusieurs de mes colonnes du select ne faisant pas partie du group by

    je n'arrive pas a trouver la syntaxe car le Group by doit se faire sur les 3 variables citees
    Merci a vous pour vos suggestions

    Oncle Pete

  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
    21 896
    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 : 21 896
    Points : 53 126
    Points
    53 126
    Billets dans le blog
    6
    Par défaut
    Il vous manque "libeloper" dans le GROUP BY !

    A +

  3. #3
    Membre habitué
    Avatar de Oncle_Pete
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 246
    Points : 175
    Points
    175
    Par défaut
    Merci SQLPro

    Mon pb est que je dois faire mon group by sur les 3 variables salarie-operation-dateoperation.

    Je dois admettre que j'ai vire (pour faire plus court) dans la liste de l'insert et du select plusieurs variables qui sont datedebut, datefin, etablissement, et n°Ordre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    INSERT INTO cumulmhe (salarie, dateoper, libeloper, operation, datedebut, datefin, etablissement, n°Ordre, qtejou ...
     
    SELECT salarie, dateoper, libeloper, codeoper, datedebut, datefin, etablissement, n°Ordre, ...
    Faire un group by sur toutes ces variables n'aurait pas de sens.

  4. #4
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Pouvez-vous nous donner la structure de la table lignemhe ?

    A+

  5. #5
    Membre habitué
    Avatar de Oncle_Pete
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 246
    Points : 175
    Points
    175
    Par défaut
    Bien sur Elsuket

    Table lignemhe :

    Column Name Datatype
    ORIGINEMVT char(3)
    SALARIE varchar(17)
    DATEDEBUT datetime
    DATEFIN datetime
    RUBRIQUE varchar(17)
    ORDRE int
    LIBELLE varchar(35)
    RIBSALAIRE varchar(17)
    BANQUEEMIS varchar(35)
    TOPREGLE char(1)
    DATEPAIEMENT datetime
    ETABLISSEMENT char(3)
    TYPALIMPAIE char(3)
    BASE numeric(19,9)
    TAUX numeric(19,9)
    COEFF numeric(19,9)
    MONTANT numeric(19,9)
    DATEINTEGRAT datetime
    DATECOMPT datetime
    AREPORTER char(3)
    CONFIDENTIEL char(1)
    TOPCONVERT char(1)
    OPERATION int
    DATEOPER datetime
    LIBELOPER varchar(35)
    CODEOPER varchar(15)
    LIBRE1 varchar(30)
    TOP1 char(1)

    Avec 2 index unique
    - ZMH_SALARIE, ZMH_OPERATION, ZMH_DATEOPER, ZMH_RUBRIQUE, ZMH_LIBELLE, ZMH_ORDRE
    - ZMH_SALARIE, ZMH_DATEDEBUT, ZMH_DATEFIN

    en esperant que cela puisse vous aider ...
    Merci

    Oncle Pete

  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 : 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
    Points : 12 371
    Points
    12 371
    Par défaut
    Merci

    le triplet {salarie, dateoper, codeoper} vous permet-il de retrouver de façon déterministe libeoper ?

  7. #7
    Membre habitué
    Avatar de Oncle_Pete
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 246
    Points : 175
    Points
    175
    Par défaut
    Salut


    J'abandonne le sujet et les recherches.
    Il faut que j'avance. Je vais faire autrement meme si la solution que j'envisage ne me plait pas intellectuellement parlant.
    Merci elsuket pour le temps que tu m'a accorde.

    Oncle Pete

  8. #8
    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
    Points : 12 371
    Points
    12 371
    Par défaut
    Dommage, je pense qu'on n'était pas loin de la solution
    Il eût fallu que nous travaillions côte à côte ...

Discussions similaires

  1. [DTS/SQL2K] syntaxe pour update
    Par Monstros Velu dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/12/2007, 12h27
  2. [2K5]Syntaxe Update Set From Join Group by
    Par Monstros Velu dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/10/2007, 10h57
  3. erreur syntaxe sur GROUP BY
    Par akara dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/09/2007, 13h56
  4. Syntaxe d'une requête avec GROUP
    Par gvdmoort dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/10/2006, 15h10
  5. [SQL2K][BCK] erreur de syntax pour update et insert
    Par lifecraft dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/02/2006, 10h31

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