Как я могу вывести список идентификаторов из таблицы SQL в виде строки значений, разделенных запятыми?

Мне нужно вывести список целых идентификаторов из таблицы, используя только записи, соответствующие некоторым критериям. Например:

Select ProdID From Products Where (ProdType='XYZ'); 

Уловка заключается в том, что я должен вернуть его как набор значений, разделенных запятыми, поэтому я могу использовать его для выбора элементов в списке с несколькими выборами:

 111,231,554,112 

а не как записи. Я не хочу делать это в своем коде на C # – мне бы хотелось, чтобы он вышел из базы данных с помощью запроса таким образом. Есть идеи?

В дополнение к методу @OMG Ponies, вы также можете попробовать этот трюк COALESCE:

Использование COALESCE для создания строк с разделителями-запятыми

 declare @string nvarchar(255) select @string = coalesce(@string + ', ', '') + cast(prodid as nvarchar(5)) from products 

MySQL


 SELECT GROUP_CONCAT(t.prodid SEPARATOR ',') FROM PRODUCTS t WHERE t.prodtype = 'XYZ' 

Oracle:


Существует отличное резюме доступных методов агрегации строк на сайте Tim Hall.

SQL Server 2005+


 SELECT STUFF((SELECT ','+ t.prodid FROM PRODUCTS t WHERE t.prodtype = 'XYZ' FOR XML PATH('')), 1, 1, '') 

Для SQL-сервера см. Здесь: Объединение значений из нескольких строк в один столбец

Давайте будем гением компьютера.