【发布时间】:2013-09-14 20:26:16
【问题描述】:
我有一个保存为存储过程的 SQL 查询。根据今天的日期,我使用三个不同的存储过程返回 1、2 或 3 天。这使我的仪表板用户可以在比较统计数据时返回并跳过周末。这实际上有效。它查看今天的日期,如果是星期天,则返回 2 天,如果是星期一,则返回 3 天,否则返回 1 天。仪表板在报表生成器中创建。如果今天是星期天,下面显示了日期之间的日期(即跳过 2 天并返回到星期五,这是最后一个正常工作日)。这么多的背景。我现在面临的挑战是仪表板的用户希望报告中的 BeginDate 和 EndDate 日期选择器参数,因此我不能再使用这些硬编码的日期字符串,但必须将参数合并到其中。如何在下面显示“GETDATE()”的行中替换名为@BeginDate 的参数:
BETWEEN DATEADD(DAY, -2, DATEADD(DAY, DATEDIFF(DAY,0,GETDATE()), 0)) AND DATEADD(SECOND, -86401, DATEADD(DAY, DATEDIFF(DAY,0,GETDATE()),0))
根据最终用户选择的日期,然后使用三个存储过程之一。我想我可以以某种方式完成这项工作,但我无法弄清楚如何用用户输入的参数替换上面的 GETDATE() 。如果我只是用一个参数替换它,它会抛出一个错误。我确信有一种非常聪明的方法可以做到这一点。我还在找!!!
【问题讨论】:
-
我没有关注。您是将 sql 编码到报告中还是调用存储过程?如果您在报告中使用内联 sql,那么 ssrs 会获取 sql 参数并为您的报告创建参数。 SP将是最好的路线。如果添加 DATEDIFF(DAY,0,@ReportDate...
-
我正在从 SQL Server 调用存储过程
标签: sql-server stored-procedures reporting