0

我有一个这样的数据集:

数据集内容

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

50   70   Good 

70   100  Excellent 

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

注意:值(75)是一列的平均值(计算)它从最大值和学生标记计算学生成绩版本 SQL Server 2016

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

谢谢你

4

2 回答 2

1

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

开始了...

我使用以下 sql 创建了两个数据集 dsGradeRange来重新创建您的示例(或多或少)

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这只会创建 30 个介于 0 和 100 之间的随机数

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

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

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

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

=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"
    )

这给出了以下结果

在此处输入图像描述

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

于 2019-01-28T17:40:50.340 回答
0

右键单击您的数据集并添加计算字段。转到Field Properties > Fields > Add并添加以下表达式,描述您的方案:

=IIF(Fields!Number.Value < 50, "Bad", "Good")
于 2019-01-28T11:58:34.980 回答