首页 > 解决方案 > 选择另一列时 LISTAGG 不起作用

问题描述

我有BATTERY包含 2 列BATTERY_PNUNDOT_FILE_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 keyword not found where expected

我的查询:

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

我不明白原因,因为我认为我的语法是OKAY。当我BATTERY_PNSELECT语句中删除列并只选择UNDOT_FILE_NAME列时,它工作正常。任何人都可以帮助解决此查询?

预期输出:

BATTERY_PN     UNDOT_FILE_NAME

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

标签: sqloracle

解决方案


使用带引号的标识符时,您希望使用双引号 (") 而不是单引号 (')。可以在此处找到有关命名规则和限定符的更多信息 - https://docs.oracle.com/database/121/SQLRF/sql_elements008。 htm#SQLRF00223


推荐阅读