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 :

Code sql oracle vers code sas sql


Sujet :

SAS Base

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2014
    Messages : 21
    Par défaut Code sql oracle vers code sas sql
    Bonjour à toutes et à tous,
    Je me permets de solliciter votre aide. En effet j'ai un bout de code sql que j'ai récupéré ce matin chez un collegue. Ce code SAS a été développé sous Oracle j crois. Moi je voudrais utiliser ce code dans proc sql et ça ne marche pas.

    En effet le code initiale ressemble à ceci

    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
    WITH ventes_regionales AS (
            SELECT region, SUM(montant) AS ventes_totales
            FROM commandes
            GROUP BY region
         ), meilleures_regions AS (
            SELECT region
            FROM ventes_regionales
            WHERE ventes_totales > (SELECT SUM(ventes_totales)/10 FROM ventes_regionales)
         )
    SELECT region,
           produit,
           SUM(quantite) AS unites_produit,
           SUM(montant) AS ventes_produit
    FROM commandes
    WHERE region IN (SELECT region FROM meilleures_regions)
    GROUP BY region, produit;
    Moi je fais juste ce qui suis
    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
     
    proc sql;
    WITH ventes_regionales AS (
            SELECT region, SUM(montant) AS ventes_totales
            FROM commandes
            GROUP BY region
         ), meilleures_regions AS (
            SELECT region
            FROM ventes_regionales
            WHERE ventes_totales > (SELECT SUM(ventes_totales)/10 FROM ventes_regionales)
         )
    SELECT region,
           produit,
           SUM(quantite) AS unites_produit,
           SUM(montant) AS ventes_produit
    FROM commandes
    WHERE region IN (SELECT region FROM meilleures_regions)
    GROUP BY region, produit;
    quit;
    Mais la proc sql ne reconnait pas le with. QQn peut m'aider a transcrire ce genre de code dans le proc sql.
    Merci d'avance

  2. #2
    Membre expérimenté
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    99
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2012
    Messages : 99
    Par défaut
    Salut,

    La clause with permet de générer des résultats de sous-requête temporaires. Du coup on peut créer les résultats et les stocker dans les tables
    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
     
    proc sql;
    create table ventes_regionales AS 
            SELECT region, SUM(montant) AS ventes_totales
            FROM commandes
            GROUP BY region
    ;
    create table meilleures_regions AS 
            SELECT region
            FROM ventes_regionales
            WHERE ventes_totales > (SELECT SUM(ventes_totales)/10 FROM ventes_regionales)
    ;
    SELECT region,
           produit,
           SUM(quantite) AS unites_produit,
           SUM(montant) AS ventes_produit
    FROM commandes
    WHERE region IN (SELECT region FROM meilleures_regions)
    GROUP BY region, produit
    ;
    drop table ventes_regionales, meilleures_regions
    ;
    quit;

    EDIT : on peut aussi passer par des SELECT imbriqués (beaucoup plus propre)

Discussions similaires

  1. convertir schema sql oracle vers modèle graphique
    Par mokhtarius dans le forum Outils
    Réponses: 1
    Dernier message: 29/10/2010, 16h56
  2. Réponses: 5
    Dernier message: 05/02/2010, 08h31
  3. Cx de Oracle vers 4D V11 SQL
    Par michelS dans le forum 4D
    Réponses: 3
    Dernier message: 10/03/2009, 17h30
  4. Réponses: 0
    Dernier message: 11/02/2009, 12h29
  5. Problème de traduction de SQL Oracle vers PostgreSQL
    Par Montaigne dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 26/04/2006, 11h15

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