[Oracle] Résultat decode en nom de colonne
Résolu/Fermé
A voir également:
- Fonction decode sql
- Fonction si et - Guide
- Récupération serveur sql - Télécharger - Gestion de données
- Fonction somme excel - Guide
- Fonction moyenne excel - Guide
- Fonction trier excel - Guide
8 réponses
DROE
Messages postés
148
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
26 juillet 2012
48
5 juin 2012 à 13:15
5 juin 2012 à 13:15
Bonjour Arch,
PA_X_L2E ne peut pas devenir un libellé de colonne avec ce DECODE imbriqué au nombre de 3.
Comment s'appellerais ta colonne si tes 2 ou 3 champs sont NULL ?
ce decode unique fonctionnerai :
select decode(pa_x_wgs84, null, 'PA_X_WGS84') AS PA_X_WGS84
Pourquoi tu veux formater le nom de la colonne ? (techniquement parlant)
DROE
PA_X_L2E ne peut pas devenir un libellé de colonne avec ce DECODE imbriqué au nombre de 3.
Comment s'appellerais ta colonne si tes 2 ou 3 champs sont NULL ?
ce decode unique fonctionnerai :
select decode(pa_x_wgs84, null, 'PA_X_WGS84') AS PA_X_WGS84
Pourquoi tu veux formater le nom de la colonne ? (techniquement parlant)
DROE
ah, enfin trouvé!
en fait il faut faire du SQL dynamique :
champagne!
en fait il faut faire du SQL dynamique :
IF cord_x IS NOT NULL AND cord_y IS NOT NULL THEN req := 'UPDATE ma_table SET ' || cord_x || ' = (SELECT coord_x FROM table2), ' || cord_y || ' = (SELECT coord_y FROM table2) WHERE ' || cord_x || ' is null AND ' || cord_y || ' is null'; EXECUTE IMMEDIATE (req); END IF;
champagne!
DROE
Messages postés
148
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
26 juillet 2012
48
7 juin 2012 à 11:28
7 juin 2012 à 11:28
oui parfais.
attention, je ne vois aucune condition concernant ta PK dans les clauses where
je ne t'aide plus comme tu as pu le remarquer, tu as tous pour réussir ta proc :)
courage
attention, je ne vois aucune condition concernant ta PK dans les clauses where
je ne t'aide plus comme tu as pu le remarquer, tu as tous pour réussir ta proc :)
courage
le résultat :
et je voudrais que PA_X_L2E devienne le nom de colonne!
http://img15.hostingpics.net/pics/455809result.jpg
et je voudrais que PA_X_L2E devienne le nom de colonne!
alors techniquement j'ai 4 colonnes (pour simplifier : un code (PK) et les 3 colonnes ci-dessus), dans les 3 il n'y en a qu'une qui est vide, et j'aimerais récupérer le code de cette ligne avec le nom de cette colonne dans le select pour ensuite effectuer un traitement dessus.
alors je ne vois pas trop ce que ton code fait, devrait-il retourner la même chose que :
mais ça ne donne pas pareil !
Pour te répondre, PA_X_L2E est mon nom de colonne, et je ne veux pas formater le nom de colonne, je veux garder celui qui contient le champ vide.
J'espère que c'est possible! Merci de ton aide
alors je ne vois pas trop ce que ton code fait, devrait-il retourner la même chose que :
select PA_X_WGS84 from ma_table where pa_x_wgs84 is null;
mais ça ne donne pas pareil !
Pour te répondre, PA_X_L2E est mon nom de colonne, et je ne veux pas formater le nom de colonne, je veux garder celui qui contient le champ vide.
J'espère que c'est possible! Merci de ton aide
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
DROE
Messages postés
148
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
26 juillet 2012
48
6 juin 2012 à 10:36
6 juin 2012 à 10:36
héhé
je suis là et inspiré mais je ne comprends pas ton raisonnement de vouloir absolument le nom de la colonne en libellé d'entête dans le résultat pour un traitement futur.
quel traitement final tu veux faire ensuite avec ce résultat ?
tu es dans une procédure PL / SQL (oracle) ? utilisation d'un cursor ?
En tous cas, je ne vois pas de solution direct en sql pur pour ton problème ou alors j'ai rien compris à ton problème :))
DROE
je suis là et inspiré mais je ne comprends pas ton raisonnement de vouloir absolument le nom de la colonne en libellé d'entête dans le résultat pour un traitement futur.
quel traitement final tu veux faire ensuite avec ce résultat ?
tu es dans une procédure PL / SQL (oracle) ? utilisation d'un cursor ?
En tous cas, je ne vois pas de solution direct en sql pur pour ton problème ou alors j'ai rien compris à ton problème :))
DROE
alors alors.
donc j'ai 6 colonnes (3x2 coordonnées), 2 de ces paires sont déjà définies dans la base pour la ligne recherchée et j'ai 2 coordonnées x et y extérieures, qu'il faut que je place dans la dernière paire, celle qui est vide.
Petite image à l'appui ce sera mieux.
http://img15.hostingpics.net/pics/777191result2.jpg
j'ai plusieurs tables comme ça, et pour chaque table les champs non renseignés seront dans des colonnes différentes, et je voudrais pouvoir insérer ces 2 coordonnées dans n'importe quelle table avec quelque chose de générique, juste en détectant quels champs sont vides, et récupérer les colonnes dans le select.
ça parait cohérent? y'a-t-il plus simple?
merci pour ton retour!
donc j'ai 6 colonnes (3x2 coordonnées), 2 de ces paires sont déjà définies dans la base pour la ligne recherchée et j'ai 2 coordonnées x et y extérieures, qu'il faut que je place dans la dernière paire, celle qui est vide.
Petite image à l'appui ce sera mieux.
http://img15.hostingpics.net/pics/777191result2.jpg
j'ai plusieurs tables comme ça, et pour chaque table les champs non renseignés seront dans des colonnes différentes, et je voudrais pouvoir insérer ces 2 coordonnées dans n'importe quelle table avec quelque chose de générique, juste en détectant quels champs sont vides, et récupérer les colonnes dans le select.
ça parait cohérent? y'a-t-il plus simple?
merci pour ton retour!
DROE
Messages postés
148
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
26 juillet 2012
48
6 juin 2012 à 11:37
6 juin 2012 à 11:37
En SQL tu n'y arriveras pas.
tu sais écrire une procédure PL/SQL ou pas ?
Avec un procédure tu peux exécuter ton traitement sur toutes les tables et colonnes en une seule passe
tes 2 coordonnées x et y extérieures à insérer sont différentes pour chaque lignes je suppose, elles sont stockées dans une autre table ?
tu sais écrire une procédure PL/SQL ou pas ?
Avec un procédure tu peux exécuter ton traitement sur toutes les tables et colonnes en une seule passe
tes 2 coordonnées x et y extérieures à insérer sont différentes pour chaque lignes je suppose, elles sont stockées dans une autre table ?
DROE
Messages postés
148
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
26 juillet 2012
48
6 juin 2012 à 12:30
6 juin 2012 à 12:30
Oui, écrire une procédure.
Pour chaque tables,tu récupères via des curseurs les lignes à tester,
tu identifies les noms de champs puis tu update en boucle grâce à ta PK.
C'est un joli code à écrire...
Pour chaque tables,tu récupères via des curseurs les lignes à tester,
tu identifies les noms de champs puis tu update en boucle grâce à ta PK.
C'est un joli code à écrire...
DROE
Messages postés
148
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
26 juillet 2012
48
6 juin 2012 à 19:05
6 juin 2012 à 19:05
cord_x VARCHAR2(12);
:)
DROE
Messages postés
148
Date d'inscription
mardi 5 mai 2009
Statut
Membre
Dernière intervention
26 juillet 2012
48
7 juin 2012 à 12:19
7 juin 2012 à 12:19
Arch, si tu veux des exemples concrets sur le PLSQL pour t'aider à faire ta proc complètement tu peux voir ce lien : je fais de la pub, c'est mon blog :)
http://www.dba-ora.fr/pages/PLSQL-Tutorial-5494697.html
DROE
http://www.dba-ora.fr/pages/PLSQL-Tutorial-5494697.html
DROE