sql - 选择另一列时 LISTAGG 不起作用
问题描述
我有BATTERY
包含 2 列BATTERY_PN
和UNDOT_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_PN
从SELECT
语句中删除列并只选择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
解决方案
使用带引号的标识符时,您希望使用双引号 (") 而不是单引号 (')。可以在此处找到有关命名规则和限定符的更多信息 - https://docs.oracle.com/database/121/SQLRF/sql_elements008。 htm#SQLRF00223
推荐阅读
- python - Ansible 库存脚本需要 requests 模块,我如何将包安装到 Ansible 本身?
- python - 如何在显示数据的每一行中添加输入?
- firebase - Firebase Cloud Functions shell:添加身份验证令牌以调用可调用对象
- oracle - 为飞行路线的基线创建 DDL
- java - 为什么我的线性分类器(感知器)能够对非线性可分数据进行分类?
- excel - Excel中多列文本的总和
- node.js - 如何一次删除超过 100 条消息?
- list - 在 sharepoint 中添加子类别
- elasticsearch - Elasticsearch 使用通配符模式更改多个别名
- python - 填充列组合的缺失日期