Sql 关于一个查询错误

Sql 关于一个查询错误,sql,oracle,ora-00904,Sql,Oracle,Ora 00904,这是我使用下面的查询时的要求,我得到了正确的响应,但问题是我想选择不同的记录,因此请帮助我如何在下面的查询中使用不同的记录 SELECT LISTAGG(PAC.DESCRIPTION || ' = '|| ORL.ITEM_PACKAGE_COUNT , ',') WITHIN GROUP (ORDER BY PAC.DESCRIPTION || ' = '|| ORL.ITEM_PACKAGE_COUNT) FROM ORDER_RELEASE_LINE ORL , PACKAGED_ITE

这是我使用下面的查询时的要求,我得到了正确的响应,但问题是我想选择不同的记录,因此请帮助我如何在下面的查询中使用不同的记录

SELECT LISTAGG(PAC.DESCRIPTION || ' = '|| ORL.ITEM_PACKAGE_COUNT , ',') WITHIN GROUP (ORDER BY PAC.DESCRIPTION || ' = '|| ORL.ITEM_PACKAGE_COUNT)
FROM ORDER_RELEASE_LINE ORL , PACKAGED_ITEM PAC , SHIPMENT SH , ORDER_MOVEMENT OM 
WHERE ORL.PACKAGED_ITEM_GID = PAC.PACKAGED_ITEM_GID
AND OM.ORDER_RELEASE_GID = ORL.ORDER_RELEASE_GID
AND OM.SHIPMENT_GID = SH.SHIPMENT_GID
AND  SH.SHIPMENT_GID = 'ULA/SAO.5000072118'
子查询返回SELECT DISTINCT PAC.DESCRIPTION,但外部查询使用内部查询列表AGGPAC.DESCRIPTION中的别名和值| |‘=’| | | ORL.ITEM_PACKAGE_COUNT’,‘ORL.ITEM_PACKAGE_COUNT’不由子查询返回。尝试:

SELECT LISTAGG(SUBQ.DESCRIPTION || ' = '|| SUBQ.ITEM_PACKAGE_COUNT , ',') 
          WITHIN GROUP (ORDER BY SUBQ.DESCRIPTION || ' = '|| SUBQ.ITEM_PACKAGE_COUNT) 
  FROM (SELECT DISTINCT PAC.DESCRIPTION, ORL.ITEM_PACKAGE_COUNT
         FROM ORDER_RELEASE_LINE ORL , PACKAGED_ITEM PAC , SHIPMENT SH , ORDER_MOVEMENT OM 
         WHERE ORL.PACKAGED_ITEM_GID = PAC.PACKAGED_ITEM_GID 
           AND OM.ORDER_RELEASE_GID = ORL.ORDER_RELEASE_GID 
           AND OM.SHIPMENT_GID = SH.SHIPMENT_GID 
           AND SH.SHIPMENT_GID = 'ULA/SAO.5000072118') SUBQ

通常,在表的内部查询和连接数据的结果的外部查询中使用相同的别名PAC是错误的做法。另一种错误做法是使用隐式连接而不是在

上定义显式内部连接。如果需要从查询中获取不同的值,然后构建这些不同值的LISTAGG,只需在查询中使用distinct,然后在使用LISTAGG的外部查询中使用distinct即可

例如:

with dupValTab(s) as
(
    select 'something' from dual union all
    select 'something else' from dual union all
    select 'something' from dual
)
select listagg(s, ', ') within group (order by s)
from (
      select distinct s
      from dupValTab
     )

选择LISTAGGPAC.DESCRIPTION | |“=”| | ORL.ITEM(包装)COUNT“,”按包装分组订单中的包装| DESCRIPTION | | ORL.ITEM(包装)“=”|或| ORL.ITEM(包装)计数,从订单发布行、包装(项目包装)包装、装运SH、,ORDER\u MOVEMENT OM其中ORL.PACKAGED\u ITEM\u GID=PAC.PACKAGED\u ITEM\u GID和OM.ORDER\u RELEASE\u GID=ORL.ORDER\u RELEASE\u GID和OM.shipping\u GID=SH.shipping\u GID和SH.shipping\u GID='ULA/SAO.5000072118'PAC请将您的查询添加到问题中,并以适当的格式添加,而不是作为注释。我肯定会这样做。.我对这方面不熟悉,所以这就是我为什么这么做的原因已将此作为注释选择LISTAGGPAC.DESCRIPTION | |‘’=‘’| | ORL.ITEM(包装)计数’,‘分组订单内由PAC.DESCRIPTION | |’=‘’| | ORL.ITEM(包装)计数’、‘订单|放行(行)包装)包装(包装)装运SH、,ORDER\u MOVEMENT OM其中ORL.PACKAGED\u ITEM\u GID=PAC.PACKAGED\u ITEM\u GID和OM.ORDER\u RELEASE\u GID=ORL.ORDER\u RELEASE\u GID和OM.shipping\u GID=SH.shipping\u GID和SH.shipping\u GID='ULA/SAO.5000072118'请任何人知道我在上述问题中提到的查询中如何使用distinct with Listagg,谢谢您的回复,但问题是PAC.Item\u package\u count对我无效,因为打包的\u Item表中不存在名为Item\u package\u count的列。因此,在内部查询中,我可以获取select distinct PAC.DESCRIPTION、ORL.ITEM\u PACKAGE\u COUNT,但问题是我只能从Order\u release\u line表中获取ITEM\u PACKAGE\u COUNT。请help@otmnotifications但listag中的PAC引用整个子查询,而不是单个表包。我把它改成了SUBQ@otmnotifications如果该查询不适用于您,请编辑您的问题,并在其中包含查询中使用的所有表的描述,并描述您需要获取的内容。