Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.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 Server将列拆分为行后,是否要添加一些带某些条件的单词_Sql_Sql Server_Tsql - Fatal编程技术网

SQL Server将列拆分为行后,是否要添加一些带某些条件的单词

SQL Server将列拆分为行后,是否要添加一些带某些条件的单词,sql,sql-server,tsql,Sql,Sql Server,Tsql,大家好,再次来到这里寻求帮助 我的表格格式如下: ID NAME 01F A-B 03F C-D 按以下格式将此表拆分为“-”: ID NAME 01F A 01F B 03F C 03F D 完成此操作后,我想添加一个带有一些条件的新行 创建如下所示的新表: NEWID ID NAME 01F_I 01F A 01F_D 01F B 03F_I 03F C 03F_D 03F D 我分出的桌子上

大家好,再次来到这里寻求帮助

我的表格格式如下:

ID     NAME
01F    A-B
03F    C-D
按以下格式将此表拆分为“-”:

ID    NAME
01F   A
01F   B
03F   C
03F   D
完成此操作后,我想添加一个带有一些条件的新行

创建如下所示的新表:

NEWID    ID    NAME
01F_I    01F   A
01F_D    01F   B
03F_I    03F   C
03F_D    03F   D

我分出的桌子上有321行。我没有理想的添加此列

select t1.ID, s.items NAME
from my tablename t1
outer apply splitfunction (t1.NAME, '-') s
这是我的拆分代码

请给我一些建议,使我的桌子符合我的需要


非常感谢&BR

另一种基于集合的方法是忘记外部应用并使用联合

select 
    CASE WHEN s.items = SUBSTRING(t1.Name,1,CHARINDEX('-',t1.Name)-1) THEN t1.ID + '_I' ELSE t1.ID + '_D' END AS NEWID
    ,t1.ID
    ,s.items NAME
from 
    mytablename t1
    outer apply splitfunction (t1.NAME, '-') s
Select ID+'_I' as NewId, ID, left(name,charindex('-', name)-1)
From table
Union all
Select ID+'_D', ID, right(name,charindex('-', reverse(name)) - 1)
From table

我只是在没有测试的情况下画了一个草图,但我认为它可以满足你的要求

“我拆分的表中有321行。我不知道要添加这一行。”哪一行?我只看到一个新列NEWID,没有新行。对不起,我的错误是添加一个新列。你能举例说明申请新列需要什么条件吗?根据名称。命名A-B,NEWNAME A作为首字母(I)so NEWNAME=ID+initial(I),B作为目的地(D)so NEWNAME=ID+des(D)此脚本使所有NEWID=ID+“u D”。没有NEWID=ID+“\u I”您的mytablename中的数据是什么?名称类似于A-B还是ab efg?某行A-B、AC-DC或ABC-DEF。Thx@Tiger93-我已经编辑了答案。看看它现在是否返回正确的数据。