sql中现有列的新列

时间:2018-02-07 15:36:04

标签: sql sql-server

我有一个值为

的列
Name
-----------
John Smith
Lee Tom
Farm Tom Ville
Jack Midu mark LLC

在sql server中是否有任何可以为每个单词创建动态列的查询。

Sample

我附加了一个带有所需输出的图像。 我有近150万条数据记录。

1 个答案:

答案 0 :(得分:1)

请检查以下SQL查询

;with cte as (
    select
        [name],
        id,
        val
    from names
    cross apply dbo.split([name],' ') 
), mydata as (
select
    [name],
    case when id = 1 then val end as name1,
    case when id = 2 then val end as name2,
    case when id = 3 then val end as name3,
    case when id = 4 then val end as name4,
    case when id = 5 then val end as name5
from cte
)
select
    [name],
    max(name1) name1,
    max(name2) name2,
    max(name3) name3,
    max(name4) name4,
    max(name5) name5
from mydata
group by [name]

我使用了用户定义的SQL split function,您可以在推荐文档中找到源代码 即使您可以使用SQL Server 2016中引入的SQL STRING_SPLIT function,因为它不会像引用的拆分函数那样返回顺序,因此在上述类似于pivot的查询中没有用处

要显示输出,请检查以下结果集

enter image description here