Я использую SSRS, Visual Studio 2015, с базовым TSQL.SSRS использует определение 2016/01 / reportdefinition.
Мне нужно отфильтровать параметр (используя фильтр табликса с параметром like) с нижележащим оператором SQL:
SELECT col1 as result1, col2 as result2 FROM table1
UNION all
SELECT colA as result1, colB as result2 FROM table 2
order by result1
Оператор, похожий на Tablix:
="*" + Parameters!Result1.Value + "*"
Я бы предположил , что параметр приведет к тому, что базовое предложение where будет применено к обоим операторам SQL в приведенном выше UNION all, но я неЯ точно не знаю.[Это предположение не правильно: см. Ответы ниже]
SQL-сервером для проекта является SQL Server 2008 R2, 2012 или 2014.
В любом случае, когдаЯ запускаю запрос с операторами where в SSMS [v 17.7], он очень быстрый и возвращает 12 результатов.
Но когда я запускаю запрос в предварительном просмотре rdl-файла для SSRS, это очень медленно.Поэтому я использую оператор:
Set Rowcount 1000
.Однако он возвращает только 1 результат вместо 12. Если я уберу опцию «Установить количество строк», ничего полезного не произойдет, а в сообщении «Загрузка» будет просто вращающийся значок.
Кто-нибудь знает, какзапросы модифицируются для фильтрации по параметру, и почему возвращается меньше результатов, чем ожидалось?
Возможность: Запускает ли он запрос без указания где, ограничивает результаты до 1000, а затем, в зависимости от используемого порядка, исключает несколько возможных совпадений результатов?[Эта возможность на самом деле , что происходит, см. Ответы ниже]
ПРИМЕЧАНИЕ. Существует гораздо лучший способ, чем то, о чем спрашивается в исходном вопросе.Вместо tablix-фильтрации можно выполнить фильтр в SQL-запросе.Смотрите ответ от ОП.