sql - 如何在 SQL 中为单个标识符连接多个值?
问题描述
我的代码:
SELECT
o.ORDER_ID
,o.ORDER_DESCRIPTION
,o.ORDER_DATE
,o.ORDER_ITEM_ID
, i.CONCATENATED_ITEM_DESC
FROM ORDERS o
INNER JOIN (
SELECT i.ITEM_ID,
CASE
WHEN COUNT(i.ITEM_ID > 1) THEN 'CONCATENATE THE DESCRIPTIONS'
END AS CONCATENATED_ITEM_DESC
FROM ITEMS i
)i ON o.ORDER_ITEM_ID = i.ITEM_ID
;
我正在尝试从连接的另一个表中获取描述。
解决方案
标准功能是listagg()
:
SELECT o.*, i.CONCATENATED_ITEM_DESC
FROM ORDERS o INNER JOIN
(SELECT i.ITEM_ID,
LISTAGG(ITEM_DESC, ', ') WITHIN GROUP )ORDER BY ITEM_DESC) AS CONCATENATED_ITEM_DESC
FROM ITEMS i
GROUP BY i.ITEM_ID
)
ON o.ORDER_ITEM_ID = i.ITEM_ID;
但是,许多数据库对该函数有其他名称,包括string_agg()
和group_concat()
。
推荐阅读
- javascript - 如果返回值(selectedPatient.age),如何隐藏或显示文本(岁)?反应
- laravel - Livewire 不发送 select2 变量
- java - 尝试在空对象引用上调用虚拟方法“java.lang.String android.content.Intent.resolveTypeIfNeeded(android.content.ContentResolver)”
- css - 在做出响应时遇到问题
- github-pages - Github 页面让我的 .jpg 图片变成特殊图片?(png图片正常)
- php - 如何在 php alpine docker nginx 上切换 xdebug
- git - 使 git 遵循符号链接(或解决相同问题的替代方法)
- python - 使用不同的值 EXCEL 多次执行相同的功能?
- php - 如何检查新的一天是否在php中的其他时区开始
- python-3.6 - python leetcode问题中的回溯数独求解器