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

SAS Base Discussion :

PROC sql : group by


Sujet :

SAS Base

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Data manager
    Inscrit en
    Février 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Data manager
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 48
    Par défaut PROC sql : group by
    Bonjour,

    j'ai une requette qui dans l'ensemble fonctionne bien sauf en ce qui concerne mon group by.

    voici ma proc SQL :

    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
     
    Proc sql;
    select datepart(i.consentement_date) as date_consent format=mmyyp. informat=mmyyp., c.study_code, catx (" - ",c.study_code, c.name) AS center_name, count(p.id) AS inclusion_number
    FROM
    Odbclib.patient p,
    Odbclib.inclusion i,
    Odbclib.out_study os,
    Odbclib.user u,
    Odbclib.center c
    WHERE p.quarantined=0
    and i.patient_id = p.id
    and os.id = p.out_study_id
    and u.login = p.invest_id
    and c.id = u.center_id
    and os.out_study_motivation in ('x', 'y') 
    group by date_consent ,c.study_code order by date_consent desc;
    quit;
    Normalement je devrais avoir
    2012.10 centre-1 2
    2012.10 centre-2 1
    2012.10 centre-3 1

    au lieu de cela j'ai :

    2012.10 centre-1 1
    2012.10 centre-2 1
    2012.10 centre-3 1
    2012.10 centre-1 1

    Comme si le changement de mon format de date n'était pas pric en compte dans le group by, car si on reprend les dates réelles (ddmmyy) mes données sont bien classés dans cet ordre.

    Quelqu'un aurait-il une idée pour m'aider
    merci

    marion

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 89
    Par défaut
    Salut,

    As-tu essayé de mettre tous les champs de ton select dans ton group by ?

  3. #3
    Membre chevronné
    Inscrit en
    Janvier 2010
    Messages
    235
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 235
    Par défaut
    oui tu dois mettre center_name dans ton group by.

    SAS ne fait de regroupement que si toutes les variables qui ne sont pas dans le group by sont des statistiques de groupe (SUM, MEAN, COUNT, MAX, etc...). CATX n'en est pas une...

  4. #4
    Membre averti
    Femme Profil pro
    Data manager
    Inscrit en
    Février 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Data manager
    Secteur : Santé

    Informations forums :
    Inscription : Février 2012
    Messages : 48
    Par défaut re
    bonjour,

    merci pour vos réponses, mais même en ajoutant le center_name dans le group by cela ne marche pas.
    J'ai vraiment l'impression que le problème vient du fait qu'il ne se base pas sur le nouveau format de la date.

    J'ai essayé en changeant mon informat en "monyy." mais cela ne marche pas non plus.

    Avez vous une autre idée SVP

    Merci

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    89
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 89
    Par défaut
    Tu as ajouté "center_name" ou l'expression catx dans ton group by ?

  6. #6
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 625
    Par défaut
    Hello,
    ce n'est pas un distinct qu'il te faut ?
    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
     
    Proc sql;
    SELECT distinct datepart(i.consentement_date) AS date_consent format=mmyyp. informat=mmyyp., c.study_code, catx (" - ",c.study_code, c.name) AS center_name, count(p.id) AS inclusion_number
    FROM
    Odbclib.patient p,
    Odbclib.inclusion i,
    Odbclib.out_study os,
    Odbclib.user u,
    Odbclib.center c
    WHERE p.quarantined=0
    AND i.patient_id = p.id
    AND os.id = p.out_study_id
    AND u.login = p.invest_id
    AND c.id = u.center_id
    AND os.out_study_motivation IN ('x', 'y') 
     ORDER BY calculated date_consent DESC;
    quit;
    Avec ton code, si tu lis la log , SAS te dira qu'il a supprimé la clause GROUP BY
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    NOTE: Une clause GROUP BY a été supprimée car ni la clause SELECT ni la clause optionnelle
          HAVING de la table-expression associée ne faisait référence à une fonction de synthèse.
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

Discussions similaires

  1. [ProC][SQL] Utiliser une variable comme nom de curseur
    Par adiGuba dans le forum Interfaces de programmation
    Réponses: 1
    Dernier message: 06/12/2006, 12h55
  2. [SQL] Group by + SUM + Min
    Par Deejoh dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/11/2006, 16h46
  3. [Access] Requète SQL Group By, Order By and Co
    Par zoidy dans le forum Langage SQL
    Réponses: 4
    Dernier message: 09/06/2006, 15h37
  4. Code retour en sortie de proc sql...
    Par milodanlso dans le forum Oracle
    Réponses: 2
    Dernier message: 26/03/2006, 13h27
  5. [SQL] Group By
    Par lapartdombre dans le forum Langage SQL
    Réponses: 3
    Dernier message: 12/01/2006, 18h06

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