在SSRS文本框中选择语句

时间:2015-12-21 21:43:10

标签: reporting-services ssrs-2008

我正在尝试为SSRS中的文本框分配值,但遇到了一些麻烦。

我的数据集" dsStepInfo"根据" ID",在下面查询,对多个行进行分组和汇总。

SELECT       ID, SUM(Target) AS Target, SUM(Actual) AS Actual
FROM         tblStepComplete
WHERE        (CompleteID = @ParamID)
GROUP BY     ID

并返回:

   ID      Target     Actual
-------------------------------
|  10   |  44418   |  44418   |
-------------------------------
|  12   |  13193   |  13123   |
-------------------------------
|  22   |  1411    |  1411    |
-------------------------------
|  50   |  160     |  80      |
-------------------------------
|  52   |  68      |  34      |
-------------------------------
|  101  |  12120   |  12119   |
-------------------------------
|  105  |  875     |  868     |
-------------------------------
|  140  |  40      |  40      |
-------------------------------
|  560  |  2985    |  3418    |
-------------------------------

Report Grid

我想将图片中网格中的单元格分配给某个ID。罐110的单元总是ID = 50的目标和例如ID = 50的实际。返回的许多ID都不会填充在表中,只显示在此表中显示的10个。有没有办法在文本框中执行SELECT或等效项作为表达式从数据集中获取这些特定值?

2 个答案:

答案 0 :(得分:1)

您可以使用Lookup功能。

这应该得到ID#50并输出其目标:

=Lookup(50, Fields!ID.Value, Fields!Target.Value, "DSStepInfo")

答案 1 :(得分:0)

我想如果是我,我只会使用Case语句,比如

SELECT 
Case [ID]
    WHEN 10 Then 'Tank 50'
    WHEN 12 Then 'Tank 120'
    When 22 Then 'Tank 130'
    WHEN 50 Then 'Tank 140'
    When 52 Then 'Tank 150'
End As TankNo
,SUM([Target]) As Target
,SUM([Actual]) As Actual
FROM         tblStepComplete
WHERE        (CompleteID = @ParamID)
Group By [ID]

然后使用显示的值构建报告。更好的是一个额外的表,其中Tank名称链接到您正在提取的ID,但如果您没有,那么Case语句相当容易维护。