从到数据集列ssrs获取值

时间:2019-01-28 11:49:33

标签: reporting-services sqlreportingservice

我有一个这样的数据集:

数据集内容

From  To Comment 
----+---+-------- 
0    50   Bad 

50   70   Good 

70   100  Excellent 

如果我的值是75,则需要通过搜索数据集来获得优秀。 我知道查询功能,但这不是我想要的。我怎样才能做到这一点? 该值应为百分比。

  

注意:值(75)是一列的平均值(已计算)   根据最高分数和学生分数计算学生成绩版本SQL Server   2016

     

注2:数据集来自数据库,不是静态值

谢谢

2 个答案:

答案 0 :(得分:1)

假设您只有固定数量的“成绩”,那么这将起作用。但是,我强烈建议您尽可能在服务器上进行此类工作。

我们在这里...

我创建了两个数据集 dsGradeRange ,并使用以下SQL重新创建示例(或多或少)

DECLARE @t TABLE (low int, high int, comment varchar(20))

INSERT INTO @t VALUES
(0,49,'Bad'),
(50,69,'Good'),
(70,100, 'Excellent')

SELECT * FROM @t

dsRandomNumbers 这只会在0到100之间创建30个随机数

SELECT * 
    FROM (SELECT top 30 ABS(CHECKSUM(NEWID()) % 100) as myNumber FROM sys.objects) x
    ORDER BY myNumber

我在报告中添加了一张表格以显示成绩(仅供参考)。

然后我添加了一个表格以显示dsRandomNumbers

最后,我将第二列的表达式设置为以下表达式。

=SWITCH
    (
        Fields!myNumber.Value < LOOKUP("Bad", Fields!comment.Value, Fields!high.Value, "dsGradeRange"), "Bad",
        Fields!myNumber.Value < LOOKUP("Good", Fields!comment.Value, Fields!high.Value, "dsGradeRange"), "Good",
        True, "Excellent"
    )

这给出了以下结果

die()

如您所见,我们只需要比较每种情况的高价值,第一个匹配项将返回正确的注释。

答案 1 :(得分:0)

右键单击您的数据集并添加一个计算字段。转到字段属性>字段>添加,并添加以下描述您的方案的表达式:

=IIF(Fields!Number.Value < 50, "Bad", "Good")