У меня возникла проблема, и я не знаю, как ее решить.
У меня есть отчет SSRS, который извлекается из таблицы. Я хочу, чтобы фильтр параметров показывал дедублированные значения на основе доступных параметров в одном из столбцов.
Итак, мой набор данных с запросом вроде:
SELECT * FROM table1 WITH (NOLOCK) WHERE col1 IN (@param)
Затем мне нужен параметр с именем param
, который получает свои доступные значения и значения по умолчанию из col1
в приведенном выше наборе данных, и я хочу, чтобы они были дедуплицированы.
Из чтения online Я узнал, что мне нужно создать фиктивный параметр и использовать код VBA для дедупликации этого списка.
Итак, у меня есть эти параметры:
param_dummy
, который получает доступные значения и значения по умолчанию отcol1
в приведенном выше наборе данных.param
, который получает список удаления дубликатов отparam_dummy
с помощьюCode.RemoveDuplicates
Но у меня проблема с циклической логикой. param
получает свое значение от param_default
, которое получает свое значение от набора данных/запроса, использующего param
.
Как я могу это решить?
Одна мысль состоит в том, чтобы удалить WHERE col1 IN (@param)
и вместо этого использовать фильтр в таблице Tablix в отчете SSRS. Это работает, но мне интересно, насколько это эффективно.
И / или если у кого-то есть какие-либо другие предложения, я весь слушаю.
Обновлено, чтобы добавить больше деталей...
Итак, скажем, у меня есть таблица в моей БД:
| id | col1 | col2 |
|----|------|--------|
| 1 | a | hello |
| 2 | b | how |
| 3 | a | are |
| 4 | c | you |
| 5 | d | on |
| 6 | a | this |
| 7 | b | lovely |
| 8 | c | day |
Я хочу:
- Табликс для отображения всех полей из таблицы
- фильтр, в котором пользователь может выбирать между доступными раскрывающимися списками в
col1
(дедублируется) - текстовый фильтр, который допускает нули, когда пользователь может фильтровать
col2
- параметры будут иметь значения по умолчанию, поэтому таблица будет загружаться при загрузке страницы
Итак, у меня есть набор данных с таким запросом:
SELECT
*
FROM dbo.table1
WHERE col1 IN (@col1options) AND (@col2value IS NULL OR col2 = @col2value)
Затем для col1options
я сделал бы параметры доступными и по умолчанию равными Get values from a query
и использовал бы указанный выше набор данных и col1
.
Но это не сработает, поскольку запрос/набор данных зависит от col1options
, который получает значения по умолчанию из запроса/набора данных.
Я могу использовать второй набор данных, но это означает выполнение нескольких вызовов SQL-сервера, и я хочу этого избежать.