【发布时间】:2019-07-09 12:26:33
【问题描述】:
我正在尝试group 我的结果,而不是看起来像这样:
id | nome | bairro
---------------------
1 . |Test 1 | bairro 1
1 . |Test 1 | bairro 2
2 . |Test 2 | bairro 3
看起来像这样:
id | nome | bairro
----------------------
1 . |Test 1 | bairro 1, bairro 2
2 . |Test 2 | bairro 3
“id”和“nome”在表 1 中,“bairro”在“nome”列中的table 3。
表 1
id | nome | situacao
--------------------
1 . |Test 1 | EM_ATIVIDADE
2 . |Test 2 | EM_ATIVIDADE
表 2
id | escola (fgk table 1) | bairro (fgk table 3)
-------------------------------------------------
1 . | 2 | 1
2 . | 2 | 2
表 3
id | nome
---------------
1 . | bairro 1
2 . | bairro 2
我正在尝试使用LISTAGG 和以下代码:
SELECT table1.nome, table1.id, LISTAGG(table3.nome, ', ') WITHIN GROUP (ORDER BY table3.nome) as "bairro"
FROM table1
LEFT JOIN table2 on table2.escola = table1.id
LEFT JOIN table3 on table3.id = table2.bairro
WHERE table1.situacao = 'EM_ATIVIDADE'
GROUP BY table1.id, table1.nome
ORDER BY table1.id
当我这样做时,我得到了错误
ORA-00979:不是按表达式分组
有人可以帮助我吗?我是初学者
edit:已经尝试将table1.nome 添加到我的群组中。
【问题讨论】:
-
只需将 table1.nome 添加到您的组中
-
刚刚做了,还是一样的错误 (ORA-00979)
-
table2.nome 应该是 LISTAGG 中的 table3.nome
-
编辑后的查询对我有用。 dbfiddle.uk/…
-
你应该把你的代码放到rextester.com/l/oracle_online_compiler 会让别人更快地解决/给你正确的答案。
标签: sql oracle select left-join listagg