1

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

Так, например, если я передаю значения 'a', 'b', 'c' и 'd' в свой параметр, и если в моем столбце набора данных есть только 'a' и 'd', тогда Мне нужен способ отображения «b» и «c» в отчете.

Спасибо, Pratik

+0

Какой тип данных это вы столбец? Это можно сделать с помощью специального кода. –

+0

Его varchar. Даже я думал о пользовательском коде, место, где я застреваю, проходит через все уникальные значения моего столбца, я не могу понять эту часть. – PratikGandhi

ответ

1

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

select 'a' as ParamValue 
union all 
select 'b' as ParamValue 
union all 
select 'c' as ParamValue 
union all 
select 'd' as ParamValue 

Set вы параметр значения заселяться этим запросом: enter image description here

Теперь Добавить таблицу, которая может перечислить свои значения параметров.

enter image description here

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

=IIf(IsNothing(Lookup(Fields!PARAMVALUE.Value,Fields!COLVALUE.Value,Fields!COLVALUE.Value, "MainDataSet")), True, False) 

Вы можете использовать это в качестве фильтра, чтобы просто показать значение параметров, где эта функция не возвращает значение:

enter image description here

+0

Прошу прощения, но я не получил вас там, когда вы говорите, что мне понадобится запрос на поставку значений для моего параметра, параметр будет получать значения от конечных пользователей во время выполнения – PratikGandhi

+0

@PratikGandhi см. Мое редактирование – StevenWhite

+0

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

0

Можно ли изменить хранимую процедуру (или создать новую, основанную на старой для этого отчета)? Если да, то вы можете перейти от INNER JOIN к OUTER JOIN и получить этот результат. Например, если хранимая процедура показала, сколько клиентов были выставлены в прошлом месяце и выглядела:

SELECT ClientName, SUM(BillAmount) AS TotalBilled 
FROM Clients 
INNER JOIN Bills ON Clients.ClientId = Bills.ClientId AND Bills.BillDate >= DateAdd(m, -1, GetDate()) 
WHERE ClientId IN @ClientIds 
GROUP BY ClientName 
ORDER BY ClientName 

, то это исключило бы все клиентам, не оплаченные. Если вы изменяете к OUTER JOIN как так:

SELECT ClientName, SUM(BillAmount) AS TotalBilled 
FROM Clients 
LEFT OUTER JOIN Bills ON Clients.ClientId = Bills.ClientId AND Bills.BillDate >= DateAdd(m, -1, GetDate()) 
WHERE ClientId IN @ClientIds 
GROUP BY ClientName 
ORDER BY ClientName 

тогда клиенты, не имеющие счетов все еще будет с Null суммы на сумму счет

+0

Я изменяю хранимую процедуру я не буду / – PratikGandhi

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