Я использую oracle 11 (не уверен насчет точной версии, но поскольку LISTAGG не работает, я полагаю, это не выпуск 2) через ODBC и Crystal Reports 2008.
Вот проблема, которая у меня есть:
Вот таблица:
TABLE ODB.TASK_CARD_CONTROL
------------------------------------------
task_card control_category code
------------------------------------------
1 zone 17
1 zone 33
1 zone 21
2 zone 18
2 zone 05
3 zone 55
3 zone 32
3 zone 72
Я использую функцию WM_CONCAT, чтобы получить что-то вроде этого:
task_card zones
1 17,33,21
2 18,05
3 55,32,72
Вот SQL для этого:
SELECT TASK_CARD, WM_CONCAT(code) as ZONES
FROM ODB.TASK_CARD_CONTROL
WHERE ODB.TASK_CARD_CONTROL.CONTROL_CATEGORY = 'ZONE'
GROUP BY TASK_CARD
но я бы хотел, чтобы зоны были отсортированы, поэтому я попробовал это:
SELECT TASK_CARD, WM_CONCAT(code) as ZONES
FROM (SELECT TASK_CARD, CODE, CONTROL_CATEGORY FROM ODB.TASK_CARD_CONTROL
ORDER BY CODE)
WHERE ODB.TASK_CARD_CONTROL.CONTROL_CATEGORY = 'ZONE'
GROUP BY TASK_CARD
но по какой-то причине он возвращает следующую ошибку:
Failed to retrieve data from the database.
Details: 42S22:[Oracle][ODBC][Ora]ORA-00904:
"ODB"."TASK_CARD_CONTROL"."CONTROL_CATEGORY" : invalid identifier
Я действительно не понимаю, что я делаю здесь неправильно ... Кто-нибудь может дать мне подсказку?