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 :

Renommer variable depuis autre variable


Sujet :

Langage SQL

  1. #1
    Invité
    Invité(e)
    Par défaut Renommer variable depuis autre variable
    Bonjour,
    Une petite question pour renommer une variable.
    J'ai 3 colonnes (x2300 lignes):
    • la 1ère contient des dates;
    • la 2nd contient 1 seul et unique nom;
    • la 3ème mes valeurs.


    J'aimerai donner en tant que nom de variable de ma 3ème colonne, le nom qu'on trouve dans la 2nd colonne.


    Niveau code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE Matrice RENAME COLUMN Indexvalue TO … ;
    Je ne vois pas quoi mettre à la place des "...". Il faudrait que ce soit la valeurs disponible dans ma colonne 2.

    Merci pour votre aide.

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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 454
    Par défaut
    Qu’appelez-vous une variable exactement ?
    D'après le code ça ressemble à une colonne, mais j'ai un doute.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Oui c'est bien ça.

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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 454
    Par défaut
    Il faut construire votre requête en deux fois en utilisant le langage de programmation de votre SGBD : T-SQL pour SQL-Server, PL/SQL pour Oracle, et cetera.

    Quel est votre SGBD ?

  5. #5
    Invité
    Invité(e)
    Par défaut
    Mon SGBD est via le logiciel statistique SAS.

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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 454
    Par défaut
    Sauf erreur, SAS est une application qui s'appuie sur un SGBD derrière.
    De mémoire, c'est souvent Oracle DB.
    Est-ce que la requête suivante passe ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM v$version;

  7. #7
    Invité
    Invité(e)
    Par défaut
    Oui je pense que c'est du Oracle.

    En mettant "v$version", j'obtiens:
    ERROR 22-322: Syntax error, expecting one of the following: a name, ;, (, ',', '.', ANSIMISS, AS, CROSS, EXCEPT, FULL, GROUP,
    HAVING, INNER, INTERSECT, JOIN, LEFT, NATURAL, NOMISS, ORDER, OUTER, RIGHT, UNION, WHERE.
    Sinon en mettant "$version", j'obtiens:
    ERROR 22-322: Syntax error, expecting one of the following: a name, a quoted string, (, CONNECTION, DICTIONARY.
    ERROR 202-322: The option or parameter is not recognized and will be ignored.
    Dernière modification par Waldar ; 30/12/2013 à 16h34. Motif: Balises quote

  8. #8
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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 454
    Par défaut
    Les messages d'erreur ne ressemblent pas à Oracle DB.
    Est-ce que la requête suivante fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select * from information_schema.columns;

  9. #9
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    La grammaire SAS etant plutot eloignee du SQL Standard, je vous conseillerai plutot d aller faire un tour ici , endroit surement plus approprie a votre demande

    Bon courage

  10. #10
    Invité
    Invité(e)
    Par défaut
    Waldar, voici le méssage d'erreur que j'obtiens:
    ERROR: Libnames are restricted to eight characters. information_schema has been truncated.

    Yanika_bzh:
    On ne parle pas du langage natif de SAS mais plutôt du SQL dans SAS. Cad que via une PROC SQL, on peut directement écrire en SQL dans SAS:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Proc SQL;
       SELECT * FROM information_schema.COLUMNS;
    Run;
    Dernière modification par Waldar ; 30/12/2013 à 17h01. Motif: Balise quote

  11. #11
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    @Ziad91

    Sauf qu en SQL :
    - Il n y a pas de notion de variable
    - Les noms de colonnes sont immuables car inscrites dans un modele physique de donnees. Vous pouvez cependant creer des alias ou des vues pour repondre a votre besoin de renommage dynamique

    Votre question est : Renommer variable depuis autre variable

    Dans la page en lien (cf precedent message) , vous trouvez quelque chose qui semble matcher a votre question :


    Comment renommer les variables d'une table SAS ?


    Une solution possible consiste à utiliser l'option "RENAME", à l'intérieur d'une étape "DATA".

    Ci-dessous, un exemple de code SAS utilisant l'option "RENAME" :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    DATA base;
    INPUT var1 var2;
    CARDS;
    10 5 
    3 8
    ;
    DATA base2;
    SET base;
    RENAME var1=variable1;
    RENAME var2=v2;
    RUN;
    La table "base" contient deux variables : les variables "var1" et "var2". Grâce à l'option "RENAME", nous avons renommé la variable "var1" en "variable1" et la variable "var2" en "v2".
    Est ce que cela repond a votre question ?

  12. #12
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    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 454
    Par défaut
    Désolé, je ne connais vraiment pas le langage SAS.
    On voit bien dans les messages d'erreur qu'il y a des règles précises.

    L'idée générale c'est de générer une chaîne de caractères contenant le code à créer, je vous l'indique en SQL Oracle.

    Mettre le résultat de cette requête dans une variable chaîne de caractères :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT 'ALTER TABLE Matrice RENAME COLUMN Indexvalue TO '
        || max(deuxieme_colonne)
      INTO MaChaine
      FROM Matrice;
    Puis exécuter la chaîne de caractère :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXECUTE IMMEDIATE MaChaine;
    À adapter en SAS.

Discussions similaires

  1. Renommer variable depuis autre variable
    Par Invité dans le forum Macro
    Réponses: 6
    Dernier message: 30/12/2013, 18h15
  2. Réponses: 2
    Dernier message: 05/07/2013, 16h06
  3. Réponses: 4
    Dernier message: 24/04/2011, 17h33

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