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
- 这是通过添加 "A Desc" 列得到的第一个所需输出:
编号 |一个名字 |描述 |出价 |
1 | Name_A_1 | Desc_A_1 | 11; 12; 13 |
3 | Name_A_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
** 我收到 "not a GROUP BY expression"
的错误
- 这是在最后一列中添加的第二个所需输出(带有 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) |
我还没有走到这一步,卡在上面的查询上了。本节我想将 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
我正在尝试使用 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
- 这是通过添加 "A Desc" 列得到的第一个所需输出:
编号 |一个名字 |描述 |出价 |
1 | Name_A_1 | Desc_A_1 | 11; 12; 13 |
3 | Name_A_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
** 我收到 "not a GROUP BY expression"
的错误- 这是在最后一列中添加的第二个所需输出(带有 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) |
我还没有走到这一步,卡在上面的查询上了。本节我想将 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