任何人都可以请帮助我找出一个更方便,高效(最短)的方式来编写下面的脚本?我这样做的原因是因为我最终会在SSRS上使用脚本。有没有办法缩短这个脚本?
在SSRS上,将有两个参数,并且都设置为空值。
如果运行SSRS的用户只显示开始日期参数,那么我的报告应该给出任何日期> =开始日期。
如果用户在@startingdate和@endingdate上放置日期,我的脚本将仅搜索@startingdate和@endingdate之间的日期。
你们有没有想要达到的目标?我有一个类似于这种情况的SSRS报告,但更新非常麻烦,因为如果我更新了其中一个声明,那么我必须在其他声明中进行更新。由于这个原因,剧本也很大且重复。
如果你能帮助我找到一个更好的方法来缩短或减少编码麻烦,请让我知道,谢谢!
下面是我使用的示例脚本:
DECLARE @STARTINGDATE
DECLARE @ENDINGDATE
SET @STARTINGDATE = '10/01/2013'
SET @ENDINGDATE = '10/05/2013'
CASE
WHEN @STARTINGDATE <> '' AND @ENDINGDATE <> ''
SELECT * FROM SALESTABLE
WHERE SALESDATE BETWEEN @STARTINGDATE AND @ENDINGDATE
END
WHEN @STARTINGDATE = '' AND @ENDINGDATE = ''
SELECT * FROM SALESTABLE
END
WHEN @STARTING <> '' AND @ENDINGDATE = ''
SELECT * FROM SALESABLE
WHERE SALESDATE >= @STARTINGDATE
END
WHEN @ENDINGDATE <> '' AND @STARTINGDATE = ''
SELECT * FROM SALESABLE
WHERE SALESDATE <= @ENDINGDATE
END
您正在使用哪种RDBMS? –
闻起来像用户输入验证...这是不是要离开数据库管理系统 –
因为你明确地设置开始和结束日期,所有你真正需要的是这样的:'选择*从SALESTABLE销售日期@STARTINGDATE和@ ENDINGDATE'之间。 “CASE”的其余部分将不会执行。如果我错过了某些内容,请更新您的问题。 – 2013-10-11 05:05:28