То, что вы делаете, это соединение столбца player_name. Начиная с SQL 2008R2, нет функции агрегирования константных строк - если только вы не пишете с использованием каркаса dot net и не включаете его во всех базах данных, где вы используете эту технику.
способ, который будет работать со всеми поддерживаемыми в настоящее время версиями - 2005 +
создать пользовательскую функцию, которая принимает идентификатор команды и возвращает строку с именами (в любом порядке)
Ваш запрос становится
SELECT team_name, dbo.af_PayerNames(team_ID) Players FROM [Team tabel]
Чтобы связать строку внутри функции
DECLARE @Output VARCHAR(4000)
SET @Output = ''
SELECT @Output = @output + ' - ' + COALESCE(Player_Name, '') FROM Players where TeamId = @ param
Вы можете использовать некоторую причудливую логику, чтобы гарантировать, что разделитель '-' добавляется только когда @Output <> ''
Вы можете расширить свою функцию для сортировки по разным порядкам, передав параметр. Решение очень читабельно - возможно, есть способ сделать это с помощью подзапроса, но подзапросы всегда причиняют мне боль! Функциональный подход не подходит для очень больших таблиц - ваш мозг, вероятно, болит.
Надеюсь, это поможет