我在Microsoft SSRS 2008中遇到此特定问题:
我必须执行一个存储过程,它将返回具有相同列但具有不同格式的数据:
EXEC Main_SP
@View = .....
IF @View = Yearly,
BEGIN
EXEC SP_Yearly_Data
END
IF @View = Quarterly,
BEGIN
EXEC SP_Quarterly_Data
END
IF @View = Monthly,
BEGIN
EXEC SP_Monthly_Data
END
IF @View = Weekly,
BEGIN
EXEC SP_Weekly_Data
END
所有4个程序都具有相同的数据结构,即。相同的列,只有分组会有所不同,因此行数也会不同。
这会在SSRS中成功运作吗?
有更好的方法吗?
SSRS报告设计器中的数据集会快速刷新,以便为我提供与所提供的@View
参数相关的数据吗?
任何建议都将不胜感激。
请注意,4个内部程序中的每一个都有3-4个参数,都是相同的。
答案 0 :(得分:0)
您可以在SSRS报告中的SQL查询中使用IF
语句。我不明白为什么你的SQL不起作用。
但是,我认为创建一个主存储过程更加清晰,除了其他参数之外还需要@View参数,它会进行条件分支并返回结果。这也允许您在SSRS数据集中将其作为存储过程运行,而不是在其中包含大量IF
条件的SQL语句。
当您更改参数值时,您需要重新运行报告,但它将返回正确的数据集,而不是使用缓存的数据集,因为参数的值将会更改。