2013-04-29 4 views
0

Я создаю отчет в построителе отчетов. У меня есть 2 набора данных, они не могут быть объединены из-за их сложности. Я хотел бы сделать отчет, в котором он использует идентификатор из первого набора данных для поиска данных во втором наборе данных. Это возможно? Ниже приведены примеры, а не точный код, но то, что мне нужно:Как написать отчет из двух разных наборов данных, связанных идентификатором?

Первый Dataset:

select itemID from Items 

Второй Dataset:

select itemID, saleAmount, salePrice from Sales 

Я хотел бы настроить мой отчет, как это:

ItemID  | Sale Count             | Sale Price 
--------------+-------------------------------------------------------------+------------ 
Items.itemID | sum(Sales.saleAmount) where items.itemID = Sales.itemID  | sum(Sales.salePrice) where items.itemID = Sales.itemID 

Таким образом, конечный результат будет таким:

ItemID  | Sale Count             | Sale Price 
--------------+-------------------------------------------------------------+------------ 
1    | 11223              | $123123 
2    | 4537              | $8375 

Возможно ли это? Может быть, с условным поиском?

+0

используйте соединение между двумя функциями таблицы и ром-аггрегатом для достижения этого отчета. – Hiten004

+0

Я не могу объединить 2 набора данных в SQL, я должен сделать это Report Builder, возможно ли это? – Bill

ответ

1

Жаль, что вы не можете присоединиться к данным при создании наборов данных.

В противном случае, я могу думать о нескольких других вариантов:

Использование LookupSet и пользовательский код

Это отличный ответ How to combine aggregates within a group with aggregates across groups within SSRS имеет прекрасный пример того, как вы могли бы сделать это.

В принципе, вы добавляете собственный код в функцию (например, SumLookup), которая принимает результаты вызова LookupSet и возвращает агрегированное значение. В вашем отчете будут отображаться следующие выражения:

=Code.SumLookup(
    LookupSet(Fields!itemID.Value, Fields!itemID.Value, Fields!saleAmount.Value, "Sales") 
) 

Я создал быстрый тест, и он отлично работает.

Используйте подотчеты

Чтобы сделать эту таблицу, которую создать на основе Элементов набора данных, то в строке детализации вы бы встраивать подотчет для отображения Sales информации.

подотчету будет нужен itemID параметра для фильтрации продаж соответствующим образом, вы должны установить родительскую таблицу, чтобы передать =Fields!itemID.Value в подотчет - это будет потом повторить для каждой строки itemID и отображать соответствующие данные по продажам.

Для чего это стоит, я бы посмотрел на первый вариант - есть какой-то пользовательский код, но он прост, и вам не нужно будет развертывать несколько отчетов. Просто кажется мне чище.

+0

Отлично! Я попробую оба и отчитаюсь! – Bill

+0

Работал хорошо, я пошел с маршрутом subreport, потому что мои запросы были сложными, поэтому я разбил его на более мелкие куски. – Bill

Смежные вопросы