在列中拆分行

时间:2019-04-04 19:13:16

标签: sql

试图按存在“ /”定界符的语言对数据进行拆分它按站点ID排序,因此只有ID 412中包含法语。试图使用string_split(),但它会按行拆分,但我希望按列将其替换为示例

我想从中转换的结果

siteid  notes                                           
412     Le cardio-/ Cardio Tennis      
412     Le cardio-/Cardio Tennis         
412     La ligue de / Drop-In Tennis    
411     An extended duration                           
411     Increase flexibility               

我想成为的结果

siteid  notes                           French                  english
412     Le cardio-/ Cardio Tennis      Le cardio-tennis        Cardio Tennis 
412     Le cardio-/Cardio Tennis        Le cardio-tennis        Cardio Tennis 
412     La ligue de / Drop-In Tennis    La ligue de tennis      Drop-In Tennis 
411     An extended duration            null                    An extended duration 
411     Increase flexibility            Null                    Increase flexibility

2 个答案:

答案 0 :(得分:2)

由于您在问题中使用string_split(),因此我假设这是SQL Server,否则请忽略此答案。

我相信这会起作用:

SELECT siteid,
       notes,
       CASE WHEN CHARINDEX('/', notes) > 0
            THEN CONCAT(LEFT(notes, CHARINDEX('/', notes)-1),
                 RIGHT(notes,CHARINDEX(' ',REVERSE(notes))))
            ELSE ''
        END AS french,
       CASE WHEN CHARINDEX('/', notes) > 0
            THEN RIGHT(notes, LEN(notes) - CHARINDEX('/', notes))
            ELSE notes
        END AS english
  FROM {your_table}

答案 1 :(得分:-1)

postgres的工作示例:

Select split_part(name, '/', 1) AS Spanish, 
       split_part(name, '/', 2) as English
from translations