Sql 当选择另一列时,LISTAGG不工作

Sql 当选择另一列时,LISTAGG不工作,sql,oracle,Sql,Oracle,我的表BATTERY包含两列BATTERY\u PN和UNDOT\u FILE\u NAME,其中包含以下数据 BATTERY_PN UNDOT_FILE_NAME 135259-0000 UNDOT_ API-700-008685-005 40GP.PDF 135259-0000 China Sea Cert API-700-008685-005 40GP.PDF 我想将用分号(;)分隔的UNDOT_FILE_NAME列连接到一行中。我正在尝试此查询,但它给了我一个错误

我的表
BATTERY
包含两列
BATTERY\u PN
UNDOT\u FILE\u NAME
,其中包含以下数据

BATTERY_PN     UNDOT_FILE_NAME

135259-0000    UNDOT_ API-700-008685-005 40GP.PDF
135259-0000    China Sea Cert API-700-008685-005 40GP.PDF
我想将用分号(;)分隔的
UNDOT_FILE_NAME
列连接到一行中。我正在尝试此查询,但它给了我一个错误,
ORA-00923:FROM关键字未在预期位置找到

我的查询:

SELECT 
BATTERY_PN,
LISTAGG(UNDOT_FILE_NAME, '; ') WITHIN GROUP(ORDER BY UNDOT_FILE_NAME) UNDOT_FILE_NAME
FROM BATTERY
GROUP BY BATTERY_PN
BATTERY_PN     UNDOT_FILE_NAME

135259-0000    UNDOT_ API-700-008685-005 40GP.PDF; China Sea Cert API-700-008685-005 40GP.PDF
我不明白原因,因为我认为我的语法是好的。当我从
SELECT
语句中删除
BATTERY\u PN
列并仅选择
UNDOT\u FILE\u NAME
列时,它工作正常。有人可以帮助修复此查询吗

预期输出:

SELECT 
BATTERY_PN,
LISTAGG(UNDOT_FILE_NAME, '; ') WITHIN GROUP(ORDER BY UNDOT_FILE_NAME) UNDOT_FILE_NAME
FROM BATTERY
GROUP BY BATTERY_PN
BATTERY_PN     UNDOT_FILE_NAME

135259-0000    UNDOT_ API-700-008685-005 40GP.PDF; China Sea Cert API-700-008685-005 40GP.PDF

使用带引号的标识符时,您希望使用双引号(“)而不是单引号(”)。有关命名规则和限定符的详细信息,请参见此处-

使用带引号的标识符时,您希望使用双引号(“)而不是单引号(“)。更多关于命名规则和限定符的信息可以在这里找到-

您的查询没有问题,所以我想这一定是Oracle云基础设施的问题。它是哪个数据库版本?无法复制(在内部部署中)。它在11g和18c中对我有效@小脚印是19cI没有19c;apex.oracle.com运行18c,我有11g和12c。这可能是你使用的版本中的一个bug吗?@Littlefoot我也这么认为。我应该联系支持中心。您的查询没有问题,所以我想这一定是Oracle云基础设施的问题。它是哪个数据库版本?无法复制(在内部部署中)。它在11g和18c中对我有效@小脚印是19cI没有19c;apex.oracle.com运行18c,我有11g和12c。这可能是你使用的版本中的一个bug吗?@Littlefoot我也这么认为。我应该联系支持中心。