我正在寻找一种解决这种常见情况的“最佳实践”方式。我认为这个问题最好用一个例子来问。我们假设如下:
这些报告可能会从不同的页面启动,但也许可能会有一个“高级搜索”页面,允许他们检查/取消选中过滤器并定义参数
我想使用远程处理来生成报告
通过报表参数和报表过滤器创建包含所有这些过滤器的单个报表变得非常麻烦且非常难以维护。这让我相信我应该创建一个接受所有可能过滤器值的存储过程(如果不应该通过参数过滤结果集,则为NULL)。
你同意这个评估吗?
如果是这样,我不是TSQL专家,并希望就如何实现此存储过程提供一些一般性建议。到目前为止,我这样做:
这感觉不对劲/有效......有没有更好的方法来解决这个问题?
非常感谢有关如何处理此一般问题的任何其他建议或建议。我觉得有点失去了实施这个解决方案的正确方法,看起来应该是一个非常普遍的问题。
答案 0 :(得分:0)
经过一番研究后,我发现了一种在存储过程中的单个select语句中实现这些可选过滤器的好方法:
它看起来像:
SELECT ordernumber FROM orders
--Filter #1 - based on Parameter #1
WHERE (@param1 IS NULL) OR (somefield = @param1)
--Filter #2 - based on Parameter #2
AND WHERE (@param2 IS NULL) or (somefield2 = @param2)
--Filter #3 - based on Parameter #3
AND WHERE (@param3 IS NULL) or (somefield3 = @param3)