Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql ';没有单一的组功能';在oracle中使用Listag时_Sql_Oracle_Oracle11g - Fatal编程技术网

Sql ';没有单一的组功能';在oracle中使用Listag时

Sql ';没有单一的组功能';在oracle中使用Listag时,sql,oracle,oracle11g,Sql,Oracle,Oracle11g,我的查询正在使用Listag,它显示了一个错误00937。00000-“不是单个组功能” 我经历了许多类似于此错误的stackoverflow问题,这些答案使用了一些子查询来解决此问题。我不想在此查询中编写子查询 SELECT DISTINCT AMD.UNID AS APPLICATION_REF_ID, LISTAGG(LOC.PLT,',') WITHIN GROUP (ORDER BY LOC.PLT ) AS MYLOC FROM TAB1 AMD LEFT JOIN TAB2

我的查询正在使用Listag,它显示了一个错误00937。00000-“不是单个组功能” 我经历了许多类似于此错误的stackoverflow问题,这些答案使用了一些子查询来解决此问题。我不想在此查询中编写子查询

SELECT DISTINCT AMD.UNID AS APPLICATION_REF_ID, 
LISTAGG(LOC.PLT,',') WITHIN GROUP (ORDER BY LOC.PLT ) AS MYLOC  
FROM TAB1 AMD
LEFT JOIN TAB2 PER
ON NVL (AMD.PERMITNEWID, AMD.PERMITID) = PER.UNID
LEFT JOIN TAB3 LOC
ON NVL(AMD.PERMITNEWID, AMD.PERMITID) = LOC.PERMITID
WHERE NVL (AMD.PERMITNEWID, AMD.PERMITID) = PER.UNID
通过以下方式尝试分组:

SELECT amd.unid AS application_ref_id,
       LISTAGG (loc.plt, ',') WITHIN GROUP (ORDER BY loc.plt) AS myloc
  FROM tab1 amd
       LEFT JOIN tab2 per ON NVL (amd.permitnewid, amd.permitid) = per.unid
       LEFT JOIN tab3 loc
           ON NVL (amd.permitnewid, amd.permitid) = loc.permitid
 WHERE NVL (amd.permitnewid, amd.permitid) = per.unid
GROUP BY amd.unid

您缺少一个
分组依据
,如果您是按
UNID进行分组

SELECT AMD.UNID AS APPLICATION_REF_ID, 
LISTAGG(LOC.PLT,',') WITHIN GROUP (ORDER BY LOC.PLT ) AS MYLOC  
FROM TAB1 AMD
LEFT JOIN TAB2 PER
ON NVL (AMD.PERMITNEWID, AMD.PERMITID) = PER.UNID
LEFT JOIN TAB3 LOC
ON NVL(AMD.PERMITNEWID, AMD.PERMITID) = LOC.PERMITID
WHERE NVL (AMD.PERMITNEWID, AMD.PERMITID) = PER.UNID
GROUP BY AMD.UNID

这正在工作。谢谢,是否可以为聚合获取不同的LOC.PLT值?它给出了一个错误“字符串连接的结果太长”我的查询中有更多的join语句。您需要将其移动到子查询中,然后进行join