LISTAGG 给出了错误 "not a GROUP BY expression"

LISTAGG gave error "not a GROUP BY expression"

我正在尝试使用 LISTAGG 将文本字段 a.desc 添加到工作中的 Oracle 查询中。有人可以帮忙解决这个语法错误吗?

我有3张桌子
1) Table一个

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) Table 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) Table 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
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

** 我收到 "not a GROUP BY expression"

的错误
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)                |  

我还没有走到这一步,卡在上面的查询上了。本节我想将 Table B desc 添加到每个 B.id.

提前感谢您的帮助!

我尝试了以下查询,它适用于您的示例数据

    Select A.id1 AS "A id", A.Name1 AS "A Name", A.Desc1 AS "A Desc",
    LISTAGG(C.Table_B_id,'; ') WITHIN GROUP (ORDER BY A.id1) AS "B id(s)"
    From  A
    INNER JOIN  C ON A.id1 = C.Table_A_id
    INNER JOIN  B ON B.id1 = C.Table_B_id
    GROUP BY A.id1, A.Name1, A.Desc1
    ORDER BY A.id1

下面第二个问题的答案

   Select A.id1 AS "A id", A.Name1 AS "A Name", A.Desc1 AS "A Desc",
   LISTAGG(C.Table_B_id||'('||B.Name1||')','; ') WITHIN GROUP (ORDER BY 
   A.id1) AS "B id(s)"
   From  A
   INNER JOIN  C ON A.id1 = C.Table_A_id
   INNER JOIN  B ON B.id1 = C.Table_B_id
   GROUP BY A.id1, A.Name1, A.Desc1
   ORDER BY A.id1