Несколько вещей на заметку:
Когда SSRS оценивает запрос, он ожидает, что результаты всегда будут иметь одинаковую структуру с точки зрения имен и типов столбцов.
Так что вы НЕ МОЖЕТЕ сделать что-то вроде этого ..
IF @x=@y
BEGIN
SELECT Name, Age FROM employees
END
ELSE
BEGIN
SELECT DeptID, DeptName, DeptEMpCOunt FROM departments
END
... так как это вернет разные типы и имена столбцов и количество столбцов.
Что вы можете сделать, это ..
DECLARE @t TABLE(resultType int, colA varchar(128), colB int, colC varchar(128), colD int)
IF @x=@y
BEGIN
INSERT INTO @t(resultType, colA, ColB)
SELECT 1 as resultType, Name, Age FROM employees
END
ELSE
BEGIN
INSERT INTO @t(resultType, colB, colC, colD)
SELECT 2 AS resultType, DeptID, DeptName, DeptEmpCount FROM departments
END
SELECT * FROM @t
Все, что мы делаем, - это создание таблицы, которая может обрабатывать все варианты данных, и размещение результатов в любых столбцах, в которых можно разместить этот тип данных.
Это всегда будет возвращать одну и ту же структуру данных, поэтому SSRS будет счастлив, тогда вам нужно будет обработать столбцы для отображения ваших данных на основе того, что будет возвращено, поэтому я добавил тип результата к результатам, чтобы вы могли проверить что из отчета.