gpt4 book ai didi

sql - 列表查询 "ORA-00937: not a single-group group function"

转载 作者:行者123 更新时间:2023-12-04 14:00:26 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





ORA-00979 not a group by expression

(8 个回答)


7年前关闭。




我正在尝试使用逗号分隔值列表创建连接。例如:

rule_id | attribute_id
----------------------
1 | a
1 | b
2 | c
2 | d

应该:
rule_id | attribute_id
----------------------
1 | a,b
2 | c,d

我正在尝试使用 LISTAGG 这样做.但是,使用下面的代码,我得到 ORA-00937: not a single-group group function .我注意到一个 FOR PATH sql-server 的语法,但它看起来不适用于我们的配置。这是我的查询:
SELECT r.rule_id as RULE_ID, 
LISTAGG(a.ATTRIBUTE_ID, ', ') WITHIN GROUP (ORDER BY a.ATTRIBUTE_ID) "ATTR_IDS"
FROM N_RULE r, N_ATTRIBUTE a
WHERE r.RULE_ID = a.RULE_ID
ORDER BY r.AUDIENCE, UPPER(r.NAME);

最佳答案

我认为要使您的查询正常工作,您需要添加 group by ,更改 order by .您还应该使用正确的显式连接语法:

SELECT r.rule_id as RULE_ID, 
LISTAGG(a.ATTRIBUTE_ID, ', ') WITHIN GROUP (ORDER BY a.ATTRIBUTE_ID) as "ATTR_IDS"
FROM N_RULE r JOIN
N_ATTRIBUTE a
ON r.RULE_ID = a.RULE_ID
GROUP BY r.rule_id
ORDER BY r.rule_id;

或者,您可能希望在结果中包含其他属性:
SELECT r.rule_id, r.AUDIENCE, UPPER(r.NAME) 
LISTAGG(a.ATTRIBUTE_ID, ', ') WITHIN GROUP (ORDER BY a.ATTRIBUTE_ID) as "ATTR_IDS"
FROM N_RULE r JOIN
N_ATTRIBUTE a
ON r.RULE_ID = a.RULE_ID
GROUP BY r.rule_id, r.AUDIENCE, UPPER(r.NAME)
ORDER BY r.AUDIENCE, UPPER(r.NAME);

关于sql - 列表查询 "ORA-00937: not a single-group group function",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24253262/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com