当前位置: 首页 > 面试题库 >

将逗号分隔的值转换为多行

厉坚
2023-03-14
问题内容

我有一个这样的表:

ID NAME Dept_ID
1  a     2,3
2  b
3  c     1,2

Department是另一个具有dept_id和dept_name作为列的表。我想要这样的结果,

ID Name Dept_ID
 1   a    2
 1   a    3
 2   b
 3   c    1
 3   c    2

有什么帮助吗?


问题答案:

您可以按照以下方式进行操作:

--Dataset Preparation 
with tab(ID, NAME,Dept_ID) as (Select 1, 'a', '2,3' from dual
                               UNION ALL
                               Select  2,  'b','' from dual
                               UNION ALL
                               Select 3,  'c' ,  '1,2' from dual)      
--Actual Query                      
select distinct ID, NAME, regexp_substr(DEPT_ID,'[^,]+', 1, level) 
from tab    
connect by  regexp_substr(DEPT_ID,'[^,]+', 1, level) is not null
order by 1;

编辑:

基于我需要加入哪一列?在一个表中,我有逗号分隔的ID,而在其他表中,我只有ID

with tab(ID, NAME,Dept_ID) as (Select 1, 'a', '2,3' from dual
                               UNION ALL
                               Select  2,  'b','' from dual
                               UNION ALL
                               Select 3,  'c' ,  '1,2' from dual) ,
      --Table Dept
      tbl_dept (dep_id,depname) as ( Select 1,'depa' from dual
                                       UNION ALL
                                      Select 2,'depb' from dual 
                                      UNION ALL
                                      Select 3,'depc' from dual      
                                    ) ,      
       --Seperating col values for join. Start your query from here using with clause since you already have the two tables.                            
       tab_1 as (select distinct ID, NAME, regexp_substr(DEPT_ID,'[^,]+', 1, level) col3 
                from tab  
                connect by  regexp_substr(DEPT_ID,'[^,]+', 1, level) is not null
                order by 1)
--Joining table.                
Select t.id,t.name,t.col3,dt.depname
from tab_1 t
left outer join tbl_dept dt
on t.col3 = dt.dep_id
order by 1


 类似资料:
  • 问题内容: 如何在Java中转换为逗号分隔的字符串? 结果我想要: 这是非常相似的参考问题,但是这些解决方案都无法提供结果,这正是我所需要的。 到目前为止我尝试过的 问题答案: 这是一个流版本,在功能上等同于khelwood,但使用了不同的方法。 他们都创建了一个,将每个映射到一个,并用逗号将它们连接在一起。 它们在性能上也应该完全相同,尽管从 技术上讲 我是直接打电话给他,而他是在打电话给代表。

  • 如何在Java中将int[]转换为逗号分隔的字符串? 我想要的结果是: 这里有非常相似的参考问题,但这些解决方案都没有提供我需要的结果。 > 如何在Java中使用toString方法将int数组转换为String 如何在不SomeType@2f92e0f4的情况下打印Java对象? 如何转换列表 到目前为止我所做的,

  • 我已经查看了Pandas的内置csv功能,但是我的csv数据保存在一个列表中。我如何简单地将列表隐藏到一个7列的数据帧中。 提前谢了。

  • 我有一个包含N个字段的数据框,如下所述。列的数量和值的长度将有所不同。 输入表: 我必须用一个序列列将其转换为以下格式。 预期输出表: 我尝试过使用explode,但explode一次只能使用一个数组。 有人知道我怎么做吗?谢谢你的帮助。

  • 问题内容: 我知道如果要将s 数组转换为a ,我可以这样做: 但我不知道如何将s 数组转换为逗号分隔 问题答案: 好吧,你可以这样做:

  • 我有以下字符串 我想转换成一个可变数组,这样它就变成了[4,5]我尝试了以下操作,但没有成功