Question

Je me rends compte que c'est une demande ridicule, mais ce que j'essaie de faire, c'est de retirer plusieurs enregistrements dans une seule colonne avec du texte littéral.

Alors étant donné une table comme celle-ci

REGION  CITY    SID
-------------------
1   Chicago     1234
1   Palatine    567
1   Algonquin   234
1   Wauconda    987

Je voudrais revoir un seul disque avec une colonne, d'autres colonnes comme la région sont bien, mais une seule colonne comme celle-ci

<option value="1234">Chicago</option><option value="567">Palatine</option><option value="234">Algonquin</option><option value="987">Wauconda</option>

Des idées sur la façon de faire cela? J'exécute Oracle 9i et je ne peux pas le faire en PL / SQL


D'accord, le format de table a un peu changé, mais l'idée est la même

COUNTRY STORECODE   STORE_NAME
------------------------------
USA     1234        Chicago
USA     567         Palatine
CAN     987         Toronto

J'ai donc trouvé ce code passant par les liens répertoriés

SELECT COUNTRY,
       LTRIM(MAX(SYS_CONNECT_BY_PATH(STORECODE,','))
       KEEP (DENSE_RANK LAST ORDER BY curr),',') AS COUNTRY_HTML
FROM   (SELECT COUNTRY,
               STORECODE,
               ROW_NUMBER() OVER (PARTITION BY COUNTRY ORDER BY STORECODE) AS curr,
               ROW_NUMBER() OVER (PARTITION BY COUNTRY ORDER BY STORECODE) -1 AS prev
        FROM   tablename)
GROUP BY COUNTRY
CONNECT BY prev = PRIOR curr AND COUNTRY = PRIOR COUNTRY
START WITH curr = 1;

Et quand je l'exécute, je vois cette sortie

COUNTRY COUNTRY_HTML
--------------------
USA     1234,567
CAN     987

Ma pensée était simplement d'avoir la traction intérieure de sélection dans un autre sélectionné où je fais mon concat de Storecode et Store_name avec le HTML requis comme celui-ci ...

SELECT COUNTRY,
       LTRIM(MAX(SYS_CONNECT_BY_PATH(RECORD_HTML,','))
       KEEP (DENSE_RANK LAST ORDER BY curr),',') AS COUNTRY_HTML
FROM   (SELECT COUNTRY,
               RECORD_HTML,
               ROW_NUMBER() OVER (PARTITION BY COUNTRY ORDER BY RECORD_HTML) AS curr,
               ROW_NUMBER() OVER (PARTITION BY COUNTRY ORDER BY RECORD_HTML) -1 AS prev
        FROM   (SELECT COUNTRY, '<option value="' || STORECODE || '">' || STORE_NAME || '</option>' AS RECORD_HTML FROM tablename))
GROUP BY COUNTRY
CONNECT BY prev = PRIOR curr AND COUNTRY = PRIOR COUNTRY
START WITH curr = 1;

Bien que notre environnement frontal accepte la requête lorsque j'essaie de revoir les résultats, j'obtiens une erreur: la ressource n'est pas valide. Vous devrez peut-être recréer la création de réparer la requête avant la visualisation.

Je sais que cette erreur n'est probablement pas utile, mais des idées pourquoi ma version ne fonctionne pas?

Merci!

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top