我有一个值为
的列Name
-----------
John Smith
Lee Tom
Farm Tom Ville
Jack Midu mark LLC
在sql server中是否有任何可以为每个单词创建动态列的查询。
我附加了一个带有所需输出的图像。 我有近150万条数据记录。
答案 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的查询中没有用处
要显示输出,请检查以下结果集