【问题标题】:Query to Stored Procedure in SSRS查询 SSRS 中的存储过程
【发布时间】:2014-09-09 14:25:21
【问题描述】:

我正在从表中获取数据,并通过存储过程将其写入报告。在报告部分,它必须按用户定义的日期显示结果。

例如:

Today - should show today's results only
Yesterday - should show Yesterday's results only 

我应该如何在存储过程中声明值以及如何在 ssrs 报告部分中实现?

我的CreateDate 列不断变化,表 (FailedJobsInfo) 得到更新。

这是我的存储过程:

ALTER PROCEDURE [dbo].[FailedJobsInfo] 
    @StartDate DATETIME
AS
    SELECT 
      [SQLServer]
      ,[JobName]
      ,[StepName]
      ,[FailureMessage]
      ,[RunDateTime]
      ,[RunDuration]
      ,[CreateDate]
    FROM 
      [dbo].[FailedJobsInfo]
    WHERE  
      CONVERT(varchar(20), CreateDate, 101) = CONVERT(varchar(20), GETDATE(), 101)

【问题讨论】:

  • WHERE CONVERT(varchar(20),CreateDate, 101) >= DATEADD(DAY, -1, GETDATE()) 在 sql server 或 SSRS 中可能有效youtube.com/watch?v=RTAbpIlKahU
  • 这个怎么样? WHERE CAST(CreateDate AS DATE) = CAST(GETDATE() AS DATE)

标签: sql sql-server stored-procedures reporting-services


【解决方案1】:

从您的 SSRS 报告开始。

1) 创建一个具有如下标签和值的参数

 Label        Value
 Today          0
Yesterday       1

2) 使您的过程接受INT 参数,如果用户选择Today,它将把零0 传递给存储过程,如果用户选择Yesterday,它将把过程1 传递给过程和这个整数值将从您的 getdate() 值中减去,避免时间部分。您需要执行以下操作:

ALTER PROCEDURE [dbo].[FailedJobsInfo] 
    @StartPeriod INT
AS
BEGIN
  SET NOCOUNT ON;

    SELECT 
      [SQLServer]
      ,[JobName]
      ,[StepName]
      ,[FailureMessage]
      ,[RunDateTime]
      ,[RunDuration]
      ,[CreateDate]
    FROM 
      [dbo].[FailedJobsInfo]
    WHERE  
      CAST(CreateDate AS DATE) = CAST(GETDATE() AS DATE) - @StartPeriod  --<-- 
END

【讨论】:

    猜你喜欢
    • 2014-07-18
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    相关资源
    最近更新 更多