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

Langage SQL Discussion :

parametre dans une sous requete


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Points : 6
    Points
    6
    Par défaut parametre dans une sous requete
    bonjour,

    j'ai une table ayant pour clé composite: SALES_REGION, ANNEE
    de la forme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SALES_REGION, ANNEE, MONTANT
    APS,2008,10
    APS,2009,20
    NAP,2008,20
    je voudrais faire une requête qui m'affiche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SALES_REGION | 2008 | 2009
    APS                |10     | 20
    NAP                | 20    | 0
    pour l'instant, j'ai:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select SALES_REGION AS SR,(select MONTANT
    from  matable where ANNEE='2008' and SALES_REGION=SR),
    (select MONTANT
    from  matable where ANNEE='2009' and SALES_REGION=SR)
    from matable
    mais il ne connait pas 'SR'.

    Comment passer la région en paramètre dans les sous-requete, ou comment contourner le problème? peut-être sans passer par les sous-requètes

  2. #2
    Expert éminent sénior
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 801
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 801
    Points : 34 063
    Points
    34 063
    Billets dans le blog
    14
    Par défaut
    Ce que tu cherches à faire est de la cosmétique et n'est pas le boulot de SQL mais celui du langage de programmation du logiciel qui utilise la base de données.

  3. #3
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 394
    Points
    18 394
    Par défaut
    Vive la cosmétique !

    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
    With MaTable (SALES_REGION, ANNEE, MONTANT)
    AS
    (
    select 'APS', 2008, 10 union all
    select 'APS', 2009, 20 union all
    select 'NAP', 2008, 20
    )
      select SALES_REGION,
             sum(case annee when 2008 then MONTANT else 0 end) as [2008],
             sum(case annee when 2009 then MONTANT else 0 end) as [2009]
        from MaTable
    group by SALES_REGION;
     
    SALES_REGION 2008        2009
    ------------ ----------- -----------
    APS          10          20
    NAP          20          0

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 115
    Points : 28 480
    Points
    28 480
    Par défaut
    Tu as plusieurs manières de répondre à cette question, qui a déjà été posée de nombreuses fois sur ce forum :
    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
    SELECT  COALESCE(t1.sales_region, t2.sales_region)  AS sr
        ,   COALESCE(t1.montant, 0) AS total_2008
        ,   COALESCE(t2.montant, 0) AS total_20089
    FROM    (   SELECT  sales_region
                    ,   SUM(montant)    AS montant
                FROM    matable
                WHERE   annee = 2008
                GROUP BY sales_region
            )   AS t1
        FULL OUTER JOIN
           (   SELECT  sales_region
                    ,   SUM(montant)    AS montant
                FROM    matable
                WHERE   annee = 2009
                GROUP BY sales_region
            )   AS t2
            ON  t1.sales_region = t2.sales_region
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT  sales_region    AS sr
        ,   SUM(CASE WHEN annee = 2008 THEN montant ELSE 0 END) AS total_2008
        ,   SUM(CASE WHEN annee = 2009 THEN montant ELSE 0 END) AS total_2009
    FROM    matable
    GROUP BY sales_region
    [EDIT] Grilled

  5. #5
    Futur Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Et désolé pour l'oubli des balises [CODE]

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 22/01/2010, 03h51
  2. comment je peux passer un parametre a une sous requete
    Par boulhous dans le forum Requêtes
    Réponses: 5
    Dernier message: 20/01/2010, 12h10
  3. Réponses: 12
    Dernier message: 01/10/2009, 16h30
  4. 'Limit' ne marche pas dans une sous requete !?
    Par walou dans le forum Requêtes
    Réponses: 2
    Dernier message: 07/09/2007, 14h06
  5. Réponses: 13
    Dernier message: 27/08/2007, 13h16

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