Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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
具有多个表联接的Oracle LISTAGG_Oracle_Listagg - Fatal编程技术网

具有多个表联接的Oracle LISTAGG

具有多个表联接的Oracle LISTAGG,oracle,listagg,Oracle,Listagg,我正在使用Oracle18.c 我有一个连接三个表的查询。它很好用 select ae."PRIM_KEY", ae."EVENT_DATE", ae."EVENT_NAME", ac."FIRST_NAME" || ' ' || ac."LAST_NAME" "PRESENTER" from "AFF_EVENT_V" ae , &qu

我正在使用Oracle18.c 我有一个连接三个表的查询。它很好用

select ae."PRIM_KEY", 
ae."EVENT_DATE",
ae."EVENT_NAME",
ac."FIRST_NAME" || ' ' || ac."LAST_NAME" "PRESENTER"
from    "AFF_EVENT_V" ae
      , "AFF_CONTACT" ac
      , "AFF_EVENT_PRESENTER" aep
where   aep."EVENT_FKEY" = ae."PRIM_KEY"
and     aep."CONTACT_FKEY" = ac."PRIM_KEY"
Order by event_date desc
;
查询生成如下结果:

原始密钥 活动日期 事件名称 节目主持人 641 四月二十六日至二十一日 事件99 乔治华盛顿 622 四月十九日至二十一日 事件98 约翰·亚当斯 541 一月二十五日至二十一日 事件97 托马斯·杰斐逊 541 一月二十五日至二十一日 事件97 詹姆斯·麦迪逊 521 一月十八日至二十一日 事件96 詹姆斯·门罗
您必须添加一个
分组依据
子句

select ae."PRIM_KEY", 
ae."EVENT_DATE",
ae."EVENT_NAME",
LISTAGG(ac."FIRST_NAME" || ' ' || ac."LAST_NAME", ',') WITHIN GROUP (ORDER BY ac."LAST_NAME") as "PRESENTER"
from    "AFF_EVENT_V" ae
      , "AFF_CONTACT" ac
      , "AFF_EVENT_PRESENTER" aep
where   aep."EVENT_FKEY" = ae."PRIM_KEY"
and     aep."CONTACT_FKEY" = ac."PRIM_KEY"
Group BY 
ae."PRIM_KEY", 
ae."EVENT_DATE",
ae."EVENT_NAME"
Order by event_date desc
;

这就解决了问题。非常感谢吕克。我之前尝试过一个GROUPBY子句,但失败了。多亏了你,我意识到我必须在GROUPBY子句中包含所有前面的字段。谢谢