gpt4 book ai didi

oracle - ORA-00979不是具有复杂EXTRACTVALUE的GROUP BY表达式

转载 作者:行者123 更新时间:2023-12-03 16:29:10 34 4
gpt4 key购买 nike

我正在尝试对带有XMLTYPE列的表执行一个相当简单的Oracle查询:

Select POB_CODPOL, CODSIS From (
Select T1.POB_CODPOL, EXTRACTVALUE(T1.POB_XMLPOL, '/Polbas/polfun[nomfun="filterBySystem"]/extpar[codele="codsis"]/valele/text()') CODSIS
From TDTX_POLITICA_CLOB T1
Where T1.POB_CODEMP = '001840'
)
Group By POB_CODPOL, CODSIS


这抛出一个 ORA-00979 Not a GROUP BY Expression,我不太了解。
更糟糕的是:当我执行完全相同的查询但使用简化的XPATH查询时,它的确起作用:

Select POB_CODPOL, CODSIS From (
Select T1.POB_CODPOL, EXTRACTVALUE(T1.POB_XMLPOL, 'Polbas/codpol/text()') CODSIS
From TDTX_POLITICA_CLOB T1
Where T1.POB_CODEMP = '001840'
)
Group By POB_CODPOL, CODSIS


当使用 [nomfun="filterBySystem"]时,Oracle似乎不喜欢 GROUP BY这样的条件(没有分组子句,一切正常。)

知道为什么会发生这种情况吗?

编辑:内部查询的结果很简单:

enter image description here

最佳答案

EXTRACTVALUE已过时。

Oracle建议对其使用XMLQUERYXMLTABLE

这应该工作:

WITH t as
(SELECT T1.POB_CODPOL, x.CODSIS
FROM TDTX_POLITICA_CLOB T1
NATURAL JOIN XMLTABLE('/Polbas/polfun[nomfun="filterBySystem"]/extpar[codele="codsis"]/valele‌​'
PASSING POB_XMLPOL COLUMNS
CODSIS VARCHAR2(50) PATH '/') x
Where T1.POB_CODEMP = '001840')
SELECT POB_CODPOL, CODSIS
FROM t
GROUP BY POB_CODPOL, CODSIS;

关于oracle - ORA-00979不是具有复杂EXTRACTVALUE的GROUP BY表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32824304/

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