Я понимаю, что это нелепый запрос, но я пытаюсь вернуть несколько записей в один столбец вместе с некоторым буквальным текстом.
Итак, учитывая такую таблицу
REGION CITY SID
-------------------
1 Chicago 1234
1 Palatine 567
1 Algonquin 234
1 Wauconda 987
Я хотел бы вернуть одну запись со столбцом, другие столбцы, такие как регион, в порядке, но один такой столбец
<option value="1234">Chicago</option><option value="567">Palatine</option><option value="234">Algonquin</option><option value="987">Wauconda</option>
Любые мысли о том, как это сделать? Я использую Oracle 9i и не могу сделать это в PL/SQL.
Хорошо, формат таблицы немного изменился, но идея та же.
COUNTRY STORECODE STORE_NAME
------------------------------
USA 1234 Chicago
USA 567 Palatine
CAN 987 Toronto
Итак, я нашел этот код, пройдя по перечисленным ссылкам
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;
И когда я запускаю его, я вижу этот вывод
COUNTRY COUNTRY_HTML
--------------------
USA 1234,567
CAN 987
Моя мысль заключалась в том, чтобы просто получить внутренний выбор из другого выбора, где я выполняю свою конкатацию STORECODE и STORE_NAME вместе с требуемым html, как это...
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;
Хотя наша интерфейсная среда принимает запрос, когда я пытаюсь просмотреть результаты, я получаю сообщение об ошибке: ресурс недействителен. Возможно, вам придется заново создать или исправить запрос перед просмотром.
Я знаю, что эта ошибка, вероятно, бесполезна, но есть идеи, почему моя версия не работает?
Спасибо!