От набора данных SQL от одного ко многим Могу ли я вернуть список разделенных запятыми в SSRS?
Я возвращаю набор данных SQL в SSRS (Microsoft SQL Server Reporting Services) с отношением один ко многим, например:
ID REV Событие
6117 B FTG-06a
6117 B FTG-06a PMT
6117 B GTI-04b
6124 A GBI-40
6124 A GTI-04b
6124 A GTD-04c
6136 М GBI-40
6141 C GBI-40
Я хотел бы отобразить его в виде поля с разделителями-запятыми в последнем столбце [Событие] примерно так:
ID REV Событие
6117 B FTG-06a, FTG-06a PMT, GTI-04b
6124 A GBI-40, GTI-04b, GTD-04c
6136 М GBI-40
6141 C GBI-40
Есть ли способ сделать это на стороне вещей SSRS?
1 ответ
Вы хотите выполнить конкататацию на стороне SQL, а не на стороне SSRS, чтобы вы могли объединить эти результаты в скажем хранимой процедуре и затем отправить ее на уровень отчетности.
Помните, базы данных существуют для работы с данными. Отчет следует использовать только для уровня представления, так что нет необходимости утомлять себя попыткой получить функцию для анализа этих данных.
Лучше всего сделать это на уровне "sproc" и отправить данные из "sproc" в отчет.
Исходя из ваших правок, вот как вы это сделаете:
Для согласования полей взгляните на COALESCE. Затем вы получите строку concat всех значений, которые вы перечислили. Вот пример:
use Northwind
declare @CategoryList varchar(1000)
select @CategoryList = coalesce(@CategoryList + ‘, ‘, ”) + CategoryName from Categories
select ‘Results = ‘ + @CategoryList
Теперь, поскольку у вас есть дополнительное поле, а именно значение идентификатора, вы не можете просто добавить значения к запросу, вам нужно будет использовать CURSOR, иначе вы получите печально известную ошибку о включении дополнительных полей в вычисляемый запрос.
Посмотрите здесь для получения дополнительной помощи, убедитесь, что вы смотрите на комментарий внизу, специально опубликованный "Альберто", у которого есть такая же проблема, как и у вас, и вы должны быть в состоянии выяснить это, используя его комментарий.