Domanda

Mi rendo conto che questa è una richiesta ridicola, ma quello che sto cercando di fare è riportare più record in una sola colonna insieme ad un testo letterale.

Quindi, dato un tavolo come questo

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

Vorrei vedere un singolo record con una colonna, altre colonne come la regione vanno bene, ma una singola colonna come questa

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

Qualche idea su come farlo? Sto eseguendo Oracle 9i e non posso farlo in PL/SQL


Ok il formato del tavolo è cambiato un po ', ma l'idea è la stessa

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

Quindi ho trovato questo codice che passa attraverso i link elencati

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;

E quando lo eseguo vedo questo output

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

Il mio pensiero era semplicemente quello di avere il tiro interno selezionato da un'altra selezione in cui faccio la mia concata del StoreCode e Store_Name insieme all'HTML richiesto in questo modo ...

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;

Mentre il nostro ambiente front -end accetta la query quando provo a rivedere i risultati ottengo un errore: la risorsa non è valida. Potrebbe essere necessario ricreare la query prima di visualizzare.

So che questo errore probabilmente non è utile, ma qualche idea per cui la mia versione non funziona?

Grazie!

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top