我对MySql很有经验,但是是Sql Server的新手。。。我正尝试在我查询的同一张表中插入串联的字符串列。这可能很简单,我想查询中有复杂的部分,只是无法弄清楚如何将其作为新列简单地插入表中。
我基本上只是尝试插入到TABLE中,这给我以下错误:“列名或提供的值数与表定义不匹配。我还尝试过创建带有NULL值的列,然后插入为(基本上在MySQL中使用“设置”)。
这是我正在运行的用于获取串联列的查询。
select ID_Column,
STUFF(( SELECT DISTINCT ', ' + StuffToConcat_Column))
From Table As T1
Where (T1.ID_Column = T2.ID_Column)
FOR XML PATH('')), 1, 2, '')
FROM TABLE as T2
Group by ID_Column;
我想将其作为新列添加到同一张表上...奖励问题,如果每个ID都添加了两个以上的值,那么我需要的不只是:FOR XML PATH( ”)),1、2,”)行(即,如果其中一个ID在StuffToConcat列中具有两个以上的不同值)?
任何帮助将不胜感激!
“消息213,级别16,状态1,行1列名称或提供的编号 值与表定义不匹配。“
我现在已经尝试了其他一些方法,每个方法都有不同的错误消息:
Update dbo.Table
set dbo.Table.NewVariable =
(select ID_column, STUFF((SELECT DISTINCT ', ' + StuffToConcat_Column
From dbo.Table As T1
Where (T1.ID_Column = T2.ID_Column)
FOR XML PATH('')), 1, 2, '') AS NewVariable
FROM dbo.Table as T2
Group by ID_Column);
返回哪个:“当未将EXISTS引入子查询时,在选择列表中只能指定一个表达式。”
我也尝试过:
Update dbo.Table
set dbo.Table.NewVariable =
(STUFF((SELECT DISTINCT ', ' + StuffToConcat_Column
From dbo.Table As T1
Where (T1.ID_Column = T2.ID_Column)
FOR XML PATH('')), 1, 2, '') AS NewVariable
FROM dbo.Table as T2
Group by ID_Column);
返回哪个:“子查询返回的值大于1。当子查询遵循=,!=,<,<=,>,> =或将子查询用作表达式时,不允许这样做。”
请提供以下示例数据和结果:
ID列StuffToConcat_Column NewVariable(结果) 1黑色黑色 2红色红色,蓝色, 2蓝色红色,蓝色, 3紫色紫色,黄色,橙色, 3黄色紫色,黄色,橙色, 3橙色紫色,黄色,橙色