2015-06-01 2 views
0

Мне нужно получить все значения (Предположим, юрисдикция), которые выбраны в Параметре (Параметр многозначного значения). Моя хранимая процедура возвращает только несколько юрисдикций, поскольку таблицы имеют только данные. Но мне нужно показать другие юрисдикции, которые выбраны в качестве входных параметров с помощью Null или 0 для соответствующих значений.
Как и в случае, если я выбрал NJ, VA, IA, NY и мой SP для набора данных для отчета, получаю значения для NJ, VA, IA из таблицы, мне нужно представить их с табличными значениями и NY с пробелами или 0.Как получить все параметры, выбранные в виде строк, используя группы строк в отчете матрицы SSRS?

Теперь я получаю

        Jurisdiction    Value 
           NJ       1 
           VA       23 
           IA       5 

Но мне нужно, чтобы получить

       Jurisdiction    Value 
           NJ       1 
           VA       23 
           IA       5 
           NY       0 or Null 

Юрисдикция используется в качестве группы строк в отчете матрицы SSRS.

+0

Это звучит как проблема с хранимой процедурой. Возможно, хранимая процедура выполняет внутреннее соединение, что исключает юрисдикцию, которая не имеет связанных данных? Можете ли вы изменить это на левое соединение, чтобы всегда возвращалась юрисдикция независимо от того, есть ли данные в связанных таблицах? – mmarie

+0

Привет, Спасибо, что ответили. Я попытался использовать правое соединение и смог его получить. Но мне интересно, есть ли какой-либо вариант, который я могу сделать на уровне отчета, чем внесение изменений в процедуру. Если это единственный вариант, тогда я пойду с этим. –

+0

Вы можете изменить SQL-запрос в своем источнике данных, чтобы вы правильно присоединились к результатам процедуры. Или, может быть, вы можете сделать JOIN в своем tablix, но это будет очень сложно и сложно поддерживать. –

ответ

0

Здесь есть два подхода.

Во-первых, если вы можете изменить хранимую процедуру или написать свой собственный SQL для своего набора данных, вы можете сделать это с помощью левого внешнего соединения. Например, ваш SQL, вероятно, выглядит примерно так:

SELECT Jurisdiction, Value 
FROM JurisdictionValues 
WHERE Jurisdiction IN (@Jurisdictions) 

Это дает только результаты, имеющие значения. Если мы оставим внешнее соединение, которое против таблицы Jurisdictions, мы можем вернуть что-то для всех выбранных значений параметров, даже если значение будет равно нулю.

SELECT J.Jurisdiction, JV.Value 
FROM Jurisdictions J 
LEFT OUTER JOIN JurisdictionValues JV ON J.Jurisdiction = JV.Jurisdiction 
    AND J.Jurisdiction IN (@Jurisdictions) 

Другой способ сделать это, чтобы выполнить поиск в SSRS напрямую. У вас будет два набора данных, один из которых - юрисдикции и другие JurisdictionValues. В таблице для отчета основана на юрисдикциях и имеет следующий SQL:

SELECT Jurisdiction 
FROM Jurisdictions 
WHERE Jurisdiction IN (@Jurisdictions) 

В таблице JurisdictionValues ​​возвращающих юрисдикции и значение из хранимой процедуры. В ячейке таблицы для значения, поместите следующую формулу:

=Lookup(Fields!Jurisdiction.Value, Fields!Jurisdiction.Value, Fields!Value.Value, "JurisdictionValues") 

Поиск находит соответствующее значение для юрисдикции и возвращает значение поля.

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