首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将嵌套的表格展平为新行?

如何将嵌套的表格展平为新行?
EN

Stack Overflow用户
提问于 2018-08-02 04:46:39
回答 1查看 440关注 0票数 1

我有一个表,其中一列包含单行的嵌套表。

代码语言:javascript
复制
mytable 
title | col
a     | {1, 2}
b     | {3}
c     | NULL

我需要做的是将嵌套的表展平为逗号分隔的字符串。

代码语言:javascript
复制
Result:
{
    a: "1, 2"
    b: "3"
    c: NULL
}  

对于我的特定目的,我不能让结果只是以表格的形式出现(上面的内容非常简单,但它可以解决我的问题)。我认为我得到的最接近的语句是下面的语句(它只返回1,2,3,null)。

代码语言:javascript
复制
select t.* 
from mytable, table(mytable.col)(+) t;

我尝试过listagg,但无法让它在我的情况下工作。我目前正在尝试读取更多的嵌套表,但进展缓慢,并且我还无法找到针对此特定问题(嵌套表)的任何内容。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-02 05:06:47

这能满足您的需求吗?你说listagg没有达到你的目的是什么意思?

代码语言:javascript
复制
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

http://sqlfiddle.com/#!4/90cfb6

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51642015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档