【发布时间】:2020-11-06 13:41:20
【问题描述】:
当我使用 LISTAGG 时,我有一个查询会给出重复的结果,因为我的 Oracle 版本是 18.4,所以我不能将 select DISTINCT 与 LISTAGG 一起使用,所以我使用的是嵌套选择,但似乎无法让它工作。你能告诉我我错过了什么吗?
这是有效但带回重复结果的查询:
例如,actionitem_id 1 将显示 columnmodified of "abc,abc,abc,def,def,def"
SELECT
ai.actionitem_id,
LISTAGG( pat.PROPERTYNAME,',')
WITHIN GROUP(ORDER BY pat.PROPERTYNAME) AS columnmodified
FROM propertydefs pd , property_audit_trail pat, rt_actionitem ai
where pd.bundlename = 'ActionItem'
and pd.name in ('Action Item Revised Target Date','PVrfy')
and pd.propertydefid = pat.propertydefid
and pat.modifydate > to_date('11/01/2020', 'MM/DD/YYYY')
and pat.resourceid = ai.ACTIONITEM_ID
GROUP BY
ai.actionitem_id
ORDER BY
ai.actionitem_id
我希望 actionitem_id 1 显示修改为“abc,def”的列 所以我试图运行以下查询,但出现以下错误: ORA-00904: "PAT"."PROPERTYNAME": 无效标识符 00904. 00000 - "%s: 无效标识符"
SELECT
ai.actionitem_id,
(select LISTAGG( pat.PROPERTYNAME,',')
WITHIN GROUP(ORDER BY pat.PROPERTYNAME) AS columnmodified
FROM (select unique pat.PROPERTYNAME
from propertydefs pd , property_audit_trail pat, rt_actionitem ai
where pd.bundlename = 'ActionItem'
and pd.name in ('Action Item Revised Target Date','PVrfy')
and pd.propertydefid = pat.propertydefid
and pat.modifydate > to_date('11/01/2020', 'MM/DD/YYYY')
and pat.resourceid = ai.ACTIONITEM_ID
GROUP BY
ai.actionitem_id
ORDER BY
ai.actionitem_id)) PROPERTYNAME
from rt_actionitem ai
你能告诉我如何解决这个问题吗? 谢谢
【问题讨论】:
-
JOIN。JOIN。JOIN。这是自 1990 年代以来的标准 SQL 语法。
标签: sql string oracle distinct aggregate-functions