我需要开发 ssrs 报告,其中用户将提供一个月 asvarchar(2)
和 year as varchar(4)
。当用户单击查看报告按钮时,ssrs 报告应显示如下结果。(假设用户通过月份为 12,年份为 2013)
Date TagName Average
12/01/13 Tag01 45.23
12/01/13 Tag02 89.23
12/02/13 Tag01 2.363
12/02/13 Tag02 45.23
.
.
.
12/31/13 Tag01 55.24
12/31/13 Tag02 95.24
我设计了以下查询
CREATE TABLE #tempval
(
[timestamp] VARCHAR(30),
tagname VARCHAR(300),
tagval DECIMAL(18, 5)
)
DECLARE @month VARCHAR(2)
DECLARE @year VARCHAR(4)
SET @month='08'
SET @year='2014'
DECLARE @startdate VARCHAR(30)
DECLARE @enddate VARCHAR(30)
SET @startdate=@month + '/01/' + @year
IF ( CONVERT(INT, @month) >= Month(Getdate())
AND CONVERT(INT, @year) >= Year(Getdate()) )
BEGIN
SET @enddate=CONVERT(VARCHAR, (SELECT Getdate()))
END
ELSE
BEGIN
SET @enddate=CONVERT(VARCHAR, Dateadd(day, -1, Dateadd(month, 1, CONVERT(
DATETIME, @startdate
))
))
END
DECLARE @query VARCHAR(1000)
DECLARE @starttime VARCHAR(30)
DECLARE @endtime VARCHAR(30)
SET @starttime= CONVERT(VARCHAR, Datepart(month, Dateadd(hour, 22, Dateadd(day,
-1, CONVERT(
DATETIME, @startdate)))))
+ '/'
+ CONVERT(VARCHAR, Datepart(day, Dateadd(hour, 22, Dateadd(day,
-1, CONVERT(DATETIME, @startdate)))))
+ '/'
+ CONVERT(VARCHAR, Datepart(year, Dateadd(hour, 22, Dateadd(day,
-1, CONVERT(DATETIME, @startdate)))))
+ ' '
+ CONVERT(VARCHAR, Datepart(hour, Dateadd(hour, 22, Dateadd(day,
-1, CONVERT(DATETIME, @startdate)))))
+ ':'
+ CONVERT(VARCHAR, Datepart(minute, Dateadd(hour, 22, Dateadd(
day, -1, CONVERT(DATETIME, @startdate)))))
+ ':'
+ CONVERT(VARCHAR, Datepart(second, Dateadd(hour, 22, Dateadd(
day, -1, CONVERT(DATETIME, @startdate)))))
SET @endtime=CONVERT(VARCHAR, Datepart(month, Dateadd(hour, 22, CONVERT(DATETIME
, @startdate)
)))
+ '/'
+ CONVERT(VARCHAR, Datepart(day, Dateadd(hour, 22, CONVERT(DATETIME
, @startdate))))
+ '/'
+ CONVERT(VARCHAR, Datepart(year, Dateadd(hour, 22, CONVERT(
DATETIME, @startdate))))
+ ' '
+ CONVERT(VARCHAR, Datepart(hour, Dateadd(hour, 22, CONVERT(
DATETIME, @startdate))))
+ ':'
+ CONVERT(VARCHAR, Datepart(minute, Dateadd(hour, 22, CONVERT(
DATETIME, @startdate))))
+ ':'
+ CONVERT(VARCHAR, Datepart(second, Dateadd(hour, 22, CONVERT(
DATETIME, @startdate))))
SET @query='select * from openquery(muri,''set StartTime='''''
+ @starttime + ''''',EndTime=''''' + @endtime
+
''''' select * from ihrawdata where tagname=MURISERVER.MURI.DCS.ASSETS.87A.87A_FI_2101.DACA.PV and samplingmode=rawbytime'')'
EXEC (@query)
但它显示空白列,但我不知道为什么。