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 :

select imbriqués avec clause where


Sujet :

SAS Base

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 77
    Points : 68
    Points
    68
    Par défaut select imbriqués avec clause where
    Bonjour,

    Je bloque assez bêtement sur un select, voici un exemple du type de données sources :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    DATE	SEM	Fin1	Fin2	Fin3	Type
    x	y	1	0	1	1
    x	y	1	0	0	1
    x	y	0	1	1	1
    x	y	0	1	1	0
    Je voudrais faire quelque chose dans ce style :

    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
     
    select date,
           sem,
           sum(fin1) as nb_typ_fin1,
           sum(fin2) as nb_typ_fin2,
           sum(fin3) as Mt_fin_tot,
           (select sum(fin3)
            from matable
            where fin1=1 
                  and type=1) as Mt_fin_Typ_fin1,
           (select sum(fin3)
            from matable
            where fin2=1
                  and type=1) as Mt_fin_Typ_fin2
     
    from matable 
     
    where type=1
     
    group by date,
             sem
             ;
    J'avoue.... je bloque

    Merci d'avance

  2. #2
    Membre chevronné
    Homme Profil pro
    Biostatisticien
    Inscrit en
    Juin 2009
    Messages
    1 206
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Biostatisticien
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 206
    Points : 1 868
    Points
    1 868
    Par défaut
    Et tu veux aboutir à quoi?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 77
    Points : 68
    Points
    68
    Par défaut
    Bonjour,

    En fait, je viens de trouver la réponse en rajoutant l'ID des comptes:

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
     
    DATE	SEM	Fin1	Fin2	Fin3	Type	ID
    x	y	1	0	24	1	12345	
    x	y	1	0	50	1	12346
    x	y	0	1	75	1	12347
    x	y	0	1	98	0	12348
     
     
     
    SELECT     a.date,
               a.sem,
               sum(a.fin1) AS nb_typ_fin1,
               sum(a.fin2) AS nb_typ_fin2,
               sum(a.fin3) AS Mt_fin_tot,
               sum(b.fin3) AS Mt_Typ_Fin1,
               sum(c.fin3) AS Mt_Typ_Fin3
     
    FROM        (SELECT *
                 FROM matable
                 WHERE type=1) a
     
                LEFT OUTER JOIN
     
               (SELECT ID,
                       DATE,
                       SEM,
                       FIN3
                FROM matable
                WHERE fin1=1 
                           AND type=1) b
     
                 ON a.ID=b.ID AND a.date=b.date
     
                 LEFT OUTER JOIN
     
                 (SELECT ID,
                         DATE,
                         SEM,
                         FIN3
                FROM matable
                WHERE fin2=1 
                           AND type=1) c
     
                ON a.ID=c.ID AND a.DATE=c.DATE
     
     
    GROUP BY DATE,
             SEM
             ;
    Je voulais avoir en sortie une somme en fonction de la valeur que pouvait prendre 2 variables.
    Dans les faits, pour ce cas, la répartition (en somme du montant) de Fin3 en fonction de la valeur 1 que peut prendre Fin1 ou Fin2. De ce fait Typ_fIn1+Typ_fin2=Fin3.

    J'espère que mon explication est claire, en tout cas, avec mes données, c'est nickel !!

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

Discussions similaires

  1. [Toutes versions] Requete Select avec Clause WHERE par ODBC
    Par kernel57 dans le forum Access
    Réponses: 2
    Dernier message: 16/07/2014, 17h07
  2. Réponses: 4
    Dernier message: 19/06/2014, 17h11
  3. [PLSQL] select imbriqué avec clause (+)
    Par pullin dans le forum Oracle
    Réponses: 4
    Dernier message: 03/05/2006, 11h07
  4. Petit souci avec clause where
    Par ybruant dans le forum SQL
    Réponses: 1
    Dernier message: 21/07/2005, 22h10
  5. Requete select imbriqués avec plusieurs références
    Par GAlion dans le forum Langage SQL
    Réponses: 4
    Dernier message: 06/08/2004, 14h06

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