如何在SQL或Python中基于delimeter分离数据?

2024-05-14 16:42:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我输入的数据如下:

Column1       Column2                                                   Column3
Silver        Bridge;#400;#Pool;#410;#Garden;#427;#Lawn;#591;#Shed;#1337    Aaron
Diamond       Meadow;#492                                                   Mike
Gold          Gas;#360;#Electricity;#1991                                   Judy

我需要得到如下输出:

Column1      Column2      NewColumn     Column3
Silver       Bridge        400          Aaron
Silver       Pool          410          Aaron
Silver       Garden        427          Aaron
Silver       Lawn          591          Aaron
Silver       Shed          1337         Aaron
Diamond      Meadow        492          Mike
Gold         Gas           360          Judy
Gold         Electricity   1991         Judy

注意:此处用于分隔数据的分隔符为“;#”。尝试在第一次出现分隔符(;#)后创建一个新列,在第二次出现后创建一行,应继续为数据单元格创建新列

解决方案可以是SQL或Python,但最好是SQL。 我尝试了一些方法,但是在输出中,我能够在列或行中进行分离,但是这里我们需要在列和行中交替分离。我认为可以通过运行循环来实现,但到目前为止还没有任何效果


Tags: 数据silverbridgepoolgardencolumn1aaronjudy
1条回答
网友
1楼 · 发布于 2024-05-14 16:42:38

SQL Server中的一个选项是在交叉应用程序中使用一点JSON和条件聚合

示例或dbFiddle

Select A.Column1 
      ,B.Column2
      ,B.NewColumn
      ,A.Column3
 From  YourTable A
 Cross Apply (
                Select Column2   = max(case when [Key] % 2 = 0 then Value end)
                      ,NewColumn = max(case when [Key] % 2 = 1 then Value end)
                 From  OpenJSON( '["'+replace(string_escape([Column2],'json'),';#','","')+'"]' )
                 Group By [Key] / 2
             ) B

结果

enter image description here

相关问题 更多 >

    热门问题