Вставьте результаты запроса в виде нового столбца в таблицу, которую вы запрашиваете - PullRequest
0 голосов
/ 24 мая 2019

У меня есть опыт работы с 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 Оранжевый Фиолетовый, Желтый, Оранжевый,



...