sql中现有列的新列
我有一列值sql中现有列的新列,sql,sql-server,Sql,Sql Server,我有一列值 Name ----------- John Smith Lee Tom Farm Tom Ville Jack Midu mark LLC sql server中是否存在可以为每个单词创建动态列的查询 我已附加了一个需要输出的图像。 我有将近150万条数据记录。请检查以下SQL查询 ;with cte as ( select [name], id, val from names cross apply dbo.
Name
-----------
John Smith
Lee Tom
Farm Tom Ville
Jack Midu mark LLC
sql server中是否存在可以为每个单词创建动态列的查询
我已附加了一个需要输出的图像。
我有将近150万条数据记录。请检查以下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 Server 2016中引入的,但由于它不会像所引用的拆分函数那样返回顺序,因此在上述类似pivot的查询中不会有用
要可视化输出,请检查以下结果集
您使用的是MySQL还是MS SQL Server?可能重复的可能重复的可能重复的我使用的是MS SQL Server我认为MS遗漏了这个职位是一个巨大的失误。我建议检查一下这个拆分器。它返回位置,但它是一个内联表值函数,而不是共享链接处的多语句函数。是的,我知道,与所有那些花哨的解决方案CTE、XML、CLR等相比,经典的解决方案仍然是最快的