если вы вызываете хранимую процедуру для возврата вашего результирующего набора, просто укажите параметр, определяющий, какую версию запроса нужно выполнить. оставьте столбцы набора результатов и их типы одинаковыми.
create procedure YourReportProcedure
(
@ReportVersion char(1)
,@filterParam1 varchar(12)
,@filterParam2 int
....
)
if @ReportVersion='A'
BEGIN
SELECT
A,B,C
FROM .....
WHERE x=@filterParam1 and y=@filterParam2
END
ELSE IF@ReportVersion='C'
BEGIN
SELECT
A,B,C
FROM .....
WHERE g>@filterParam1 and r<@filterParam2
END
ELSE
BEGIN
return 1 --error
END
return 0
go