SQL Server Имейте запрос выбора как часть одного столбца выбора
Эй, мне просто интересно, возможно ли следующее
select id, name, (select name from secondTable where companyId = tableOne.id) as concatenatedString..
from tableOne
так что я ищу выбор для каждой записи, возвращаемой в tableOne, чтобы выполнить поиск в другой таблице и вернуть все значения для этого идентификатора записи. (Другая таблица является справочной, поэтому каждый идентификатор может содержать 1 или более записей). Если в подзапросе возвращается более 1 значения, чтобы создать одно строковое значение с разделителями-запятыми.
то есть возвращаемые данные будут выглядеть
1 Microsoft Bill,Gate,Jack
2 Apple Jobs
2 ответа
Вы хотите использовать FOR XML PATH
построить:
select
ID,
Name,
stuff((select ', ' + Name
from secondTable where companyId = tableOne.id
for xml path('')),
1,2,'') [Names]
from tableOne
STUFF
функция состоит в том, чтобы избавиться от финала ', '
который будет добавлен в конце.
Вы также можете увидеть другие примеры здесь:
Я не уверен, почему вы хотите пропустить объединение, потому что это сделает ваш запрос гораздо более гибким. Если вы заинтересованы в использовании дополнительного выбора, вы можете сделать это, сделав свой дополнительный выбор таблицы:
SELECT t1.id, t1.name, t2.name
FROM tableOne t1
INNER JOIN (select id, name from secondTable) AS t2
on t1.id = t2.id
Конечно, ответ Абэ имеет больше смысла, если все, что вы делаете, это присоединение к ID.
Если вы хотите агрегировать по селекту, если он возвращает несколько столбцов, вы можете использовать GROUP BY t1.id, t1.name.