Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql中现有列的新列_Sql_Sql Server - Fatal编程技术网

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等相比,经典的解决方案仍然是最快的