使用SSRS(SQL Server 2005中)我已经成立了两份报告。 为了便于说明,我们姑且称之为MAIN_REPORT
和SUB_REPORT
。
MAIN_REPORT
运行一个返回一组区域,每个区域内的多个标记名查询:
AREA Tagname
----------
A1 T1
A1 T2
A2 T3
A3 T4
如果您选择的区域的小区之一,它打开SUB_REPORT
和传递参数给@ParentTagNames
使用Join(Parameters!ResultsOfSearch.Value,",")
ResultsOfSearch
等于上述Tagname列(还没有想出如何将标记名限制为仅在选定区域中的人,而是以后我会担心)。
SUB_REPORT
需要传递的参数,并查询了标记名一个庞大的数据库,并返回一个最小值,最大值,以及可用值的平均值为:
SELECT
h.TagName as TagName,
Minimum = convert(decimal(38, 2), Min(h.Value)),
Maximum = convert(decimal(38, 2), Max(h.Value)),
Average = convert(decimal(38, 2), Avg(h.Value))
FROM INSQL.Runtime.dbo.History h
WHERE h.TagName in (@ParentTagNames)
AND h.wwVersion = 'LATEST'
AND h.wwRetrievalMode = 'Cyclic'
AND h.wwResolution = '60000'
AND h.Value > '-1.0'
AND h.DateTime >= '2009-09-01 12:00:00'
AND h.DateTime <= '2009-09-02 16:00:00'
GROUP BY h.TagName
然而,如果@ParentTagNames
等于一个以上的值,则返回任何数据。 如果它等于一个标签,它返回的数据。 我想这一定是有一些东西需要与内部的数据的格式@ParentTagNames
,因为它是从传递MAIN_REPORT
,但它似乎并不重要。
我试过以下格式:
T1,T2,T3,T4,T5,T6
'T1','T2','T3','T4','T5','T6'
我确定的多值的检查参数@ParentTagNames
。 谷歌已经成功地让我失望。
任何人?
编辑:探查魔法!
exec sp_executesql N'SELECT
h.TagName as TagName,
Minimum = convert(decimal(38, 2), Min(h.Value)),
Maximum = convert(decimal(38, 2), Max(h.Value)),
Average = convert(decimal(38, 2), Avg(h.Value))
FROM INSQL.Runtime.dbo.History h
WHERE h.TagName in (@ParentTagNames)
AND h.wwVersion = ''LATEST''
AND h.wwRetrievalMode = ''Cyclic''
--AND h.wwResolution = @Resolution
AND h.wwResolution = ''60000''
AND h.Value > ''-1.0''
--AND h.DateTime >= @StartTime
--AND h.DateTime <= @EndTime
AND h.DateTime >= ''2009-09-01 12:00:00''
AND h.DateTime <= ''2009-09-02 16:00:00''
GROUP BY h.TagName',N'@ParentTagNames nvarchar(46)',@ParentTagNames=N'M12_CPM_Filling_250.Value,M8_Filling_391.Value'