使用SQL查询根据值复制和拆分行?

时间:2019-03-14 16:43:08

标签: sql sql-server split

我有一组数据,想根据列值拆分多行。

例如,

源数据:

enter image description here

预期输出:

enter image description here

谢谢, 劳伦斯A

2 个答案:

答案 0 :(得分:0)

假设sql-server大于或等于2016版本。然后,可以使用string_split()函数:

select spl.u_id, s.name us_uid, s.age col_1, s.dob col_2, s.education col_3, s.department col_4 from @source s
    cross apply( select value u_id from string_split( (select u_id from @source s2 where s2.u_id = s.u_id ),',')
                where CHARINDEX(value,s.u_id,1) > 0) spl 

答案 1 :(得分:0)

解决上述问题的最佳方式是

  

选择值作为UID,名称,年龄,教育程度,部门

     

来自StackSoln

     

交叉应用string_split(UID,',')*

STRING_SPLIT

  

一个表值函数,根据指定的分隔符将一个字符串分成多个子字符串行。

交叉申请

  

仅返回外部表中的行,这些行从表值函数生成结果集。换句话说,CROSS APPLY的结果不包含左侧表表达式的任何行,而从右侧表表达式无法获得任何结果。交叉应用逐行INNER JOIN