Sql Server Reporting выводит строки вывода

С Sql Server Reporting Services я хотел бы создать отчет с данными о строках для некоторых заказов, например:

 Информация для заказа
 2315 1x5432 Яблоня, 9x912 розы, 1x13 лопата
 2316 3x12 Лужайка

Как я мог сделать это наиболее эффективно, либо с транзакционным sql, либо с помощью встроенного в Reporting Services? (У меня может получиться много заказов, поэтому призыв к каждой строке заказа может быть дорогим …)

    Я делаю то же самое, используя FOR XML и STUFF

    SELECT DISTINCT Col1.Table_Name TableName, STUFF ( ( SELECT ', ' + CONVERT (VARCHAR, Col2.Column_name) FROM Information_Schema.Columns Col2 WHERE Col1.Table_Name = Col2.Table_Name ORDER BY Col2.Table_Name FOR XML PATH('') ), 1, 2, '' ) AS ColumnNames FROM Information_Schema.Columns Col1 

    Я вообще решил эту проблему с пользовательской функцией.

     CREATE FUNCTION GetDetails (@order_id INT) RETURNS NVARCHAR(1000) AS BEGIN DECLARE mycursor CURSOR READ_ONLY FOR SELECT description FROM OrderDetails WHERE order_id = @order_id DECLARE @description NVARCHAR(100) DECLARE @return_value NVARCHAR(1000) SET @return_value = '' OPEN mycursor FETCH NEXT FROM mycursor INTO @description WHILE @@fetch_status = 0 BEGIN SET @return_value = @return_value + @description FETCH NEXT FROM mycursor INTO @description IF (@@fetch_status = 0) SET @return_value = @return_value + ', ' END CLOSE mycursor DEALLOCATE mycursor RETURN @return_value END; 

    Тогда ваш запрос:

     SELECT order_id, GetDetails(order_id) as details FROM Order 

    Я решил его использовать COALESCE , вдохновленный этой нитью :

     CREATE FUNCTION GetDetails(@OrderID varchar(10)) RETURNS varchar(1000) AS BEGIN DECLARE @result varchar(1000), @delimiter char SET @delimiter = ',' SELECT @result = COALESCE(@result + @delimiter, '') + Details FROM ( SELECT ProductNumber , Quantity + 'x' + ProductNumber + ' ' + ProductName AS Details FROM OrderDetail where OrderID = @OrderID ) OrderDetail ORDER BY ProductNumber RETURN @result END 

    и затем, как в ответе Джереми Штайн :

     SELECT OrderId, GetDetails(OrderId) AS Details FROM Order 
    Давайте будем гением компьютера.