将表达式转换为数据类型datetime的算术溢出错误 - SSRS

时间:2015-02-26 20:22:55

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

我有一个包含3列(id,SampleValue和SampleDateTime)的历史数据库,它们在值发生变化时记录所有id的SampleValue。我想要做的是每天构建一个报告,即使值没有改变,也会每分钟为特定的id提供SampleValue。我设法在本文How to fill the gaps?的帮助下构建了一些东西。我在存储过程中执行此操作,因此我将能够在Microsoft Visual Studio(SSRS报表设计器)中使用该存储过程来构建我的报表。这是我的代码:

create proc test13_GetHist as
WITH CTE AS (
  SELECT max(Getdate()) maxdate, min(DATEADD(day, 1, Getdate())) mindate
  FROM Historian_Database.dbo.NumericSamples 
  WHERE TagID=41
  ),
RecursiveCTE AS (
  SELECT mindate dtfield
  FROM CTE
  UNION ALL
  SELECT DATEADD(minute, 1, dtfield)
  FROM RecursiveCTE R 
    JOIN CTE T
      ON R.dtfield < T.maxdate
  )
SELECT r.dtfield, 
 (SELECT TOP 1 SampleValue
    FROM Historian_Database.dbo.NumericSamples
    WHERE SampleDateTime <= r.dtfield ORDER BY SampleDateTime DESC) SampleValue
FROM RecursiveCTE r
ORDER BY dtfield asc
OPTION (MAXRECURSION 0);

SampleValue是float类型,id是int类型,SampleDateTime是bigint或datetime2。 我的问题是,当我尝试预览报告时出现此错误消息:“在本地报告处理期间发生错误。报告处理期间发生错误。无法读取数据集DataSet2的下一个数据行。算术溢出错误转换表达式到数据类型datetime。“

我不知道如何处理该错误。

真的很感激任何帮助。

感谢,

伊曼纽尔

0 个答案:

没有答案