sql - 如何将嵌套表展平为新行?
问题描述
我有一个表,其中一列包含一个单行嵌套表。
mytable
title | col
a | {1, 2}
b | {3}
c | NULL
我需要做的是将嵌套表展平为逗号分隔的字符串。
Result:
{
a: "1, 2"
b: "3"
c: NULL
}
对于我的特定目的,我不能只将结果以表格形式(上面非常简化,但它可以解决我的问题)。我认为我得到的最接近的是以下语句(刚刚返回 1、2、3、null)。
select t.*
from mytable, table(mytable.col)(+) t;
我试过listagg
了,但无法让它适用于我的情况。我目前正在尝试阅读更多嵌套表,但进展缓慢,而且我无法找到任何针对此特定问题(嵌套表)的内容。
解决方案
这能满足您的需要吗?你是什么意思 listagg 没有为你的目的工作?
CREATE OR REPLACE TYPE my_tab_t AS TABLE OF VARCHAR2(30);
/
CREATE TABLE nested_table (id NUMBER, col1 my_tab_t)
NESTED TABLE col1 STORE AS col1_tab;
INSERT INTO nested_table VALUES (1, my_tab_t('A'));
INSERT INTO nested_table VALUES (2, my_tab_t('B', 'C'));
INSERT INTO nested_table VALUES (3, my_tab_t('D', 'E', 'F'));
SELECT TMP.id,
listagg(Column_Value,',')
WITHIN GROUP(ORDER BY Column_Value)
FROM (SELECT id,
COLUMN_VALUE
FROM nested_table t1,
TABLE(t1.col1) t2
) TMP
GROUP
BY id
推荐阅读
- r - R: 如何使用 get() 或 mget() 获取列表中的对象?
- python - 有没有更好的方法来操作熊猫数据框中的列名?
- python - setup.py install_requires 内置包:包含还是省略?
- php - 如何为 User.php 扩展多个东西
- amazon-web-services - ElasticSearch CloudFormation - 属性 VpcId 不能为空
- php - 显式路由怎么找不到Controller
- stm32 - 在 DMA 模式下无法从 UART 接收数据
- angular - mat-autocomplete:防止显示旧列表
- python - 如何更改数组的类型?
- tcl - 如何处理已删除命名空间中的变量?