У меня есть опыт работы с MySql, но новичок в Sql Server ... Я пытаюсь вставить столбец со связанными строками в ту же таблицу, которую запрашиваю. Возможно, это что-то простое, я думаю, у меня есть сложная часть в запросе, я просто не могу понять, как просто вставить его в таблицу в качестве нового столбца.
Я в основном только что попробовал вставить в TABLE, что выдает ошибку «Имя столбца или количество предоставленных значений не соответствует определению таблицы. Я также попытался создать столбец со значениями N / NULL, а затем вставить как (в основном»). используя "set", как в 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;
Я хотел бы просто привязать это к той же таблице, что и новый столбец ... Дополнительный вопрос: если для каждого идентификатора добавляется более двух значений, мне нужно больше, чем: FOR XML PATH ( '')), 1, 2, '') (то есть, если один из идентификаторов имел более 2 различных значений в столбцах 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 Column StuffToConcat_Column NewVariable (Outcome)
1 черный черный
2 красный красный, синий,
2 синий красный, синий,
3 Фиолетовый Фиолетовый, Желтый, Оранжевый,
3 Желтый Фиолетовый, Желтый, Оранжевый,
3 Оранжевый Фиолетовый, Желтый, Оранжевый,