Я пытаюсь добавить текстовое поле a.des c в рабочий запрос Oracle, используя LISTAGG. Может ли кто-нибудь помочь с разрешением этой синтаксической ошибки?
У меня есть 3 таблицы
1) Таблица A
id | Name | Desc |
1 | Name_A_1 | Desc_A_1 |
2 | Name_A_2 | Desc_A_2 |
3 | Name_A_3 | Desc_A_3 |
2) Таблица B
id | Name | Desc |
11 | Name_B_11 | Desc_B_11 |
12 | Name_B_12 | Desc_B_12 |
13 | Name_B_13 | Desc_B_13 |
3 ) Таблица C
id | Table_A_id | Table_B_id |
1 | 1 | 11 |
2 | 1 | 12 |
3 | 1 | 13 |
4 | 3 | 12 |
5 | 3 | 13 |
- Вот что работает с токовым выходом
A id | A Name | B id(s) |
1 | Name_A_1 | 11; 12; 13 |
3 | Name_A_3 | 12; 13 |
Select A.id AS "A id", A.Name AS "A Name",
LISTAGG(C.id,'; ') WITHIN GROUP (ORDER BY A.id) AS "B id(s)"
From Table_A A
INNER JOIN Table_C C ON A.id = C.id
INNER JOIN Table_B B ON B.id = C.id
GROUP BY A.id, A.Name
ORDER BY A.id
- Вот первый желаемый вывод: добавление столбца «A Des c»:
A id | Имя | A Des c | B id (s) |
1 | Имя_А_1 | Desc_A_1 | 11; 12; 13 |
3 | Имя_А_3 | Desc_A_3 | 12; 13 |
Select A.id AS "A id", A.Name AS "A Name", A.Desc AS "A Desc",
LISTAGG(C.id,'; ') WITHIN GROUP (ORDER BY A.id) AS "B id(s)"
From Table_A A
INNER JOIN Table_C C ON A.id = C.id
INNER JOIN Table_B B ON B.id = C.id
GROUP BY A.id, A.Name, A.Desc
ORDER BY A.id
** Я получаю сообщение об ошибке "не выражение GROUP BY"
- Вот второй желаемый вывод (с Name_B_ #) добавлено в последний столбец:
A id | A Name | A Desc | B id(s) |
1 | Name_A_1 | Desc_A_1 | 11(Name_B_11); 12(Name_B_12); 13(Name_B_13) |
3 | Name_A_3 | Desc_A_3 | 12(Name_B_12); 13(Name_B_13) |
Я не дошел до этого, застрял в запросе выше. В этом разделе я хочу добавить Таблицу B c к каждому B.id.
Заранее благодарю за помощь!