我有一个这样的数据集:
数据集内容
From To Comment
----+---+--------
0 50 Bad
50 70 Good
70 100 Excellent
如果我的值是75,则需要通过搜索数据集来获得优秀。 我知道查询功能,但这不是我想要的。我怎样才能做到这一点? 该值应为百分比。
注意:值(75)是一列的平均值(已计算) 根据最高分数和学生分数计算学生成绩版本SQL Server 2016
注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"
)
这给出了以下结果
如您所见,我们只需要比较每种情况的高价值,第一个匹配项将返回正确的注释。
答案 1 :(得分:0)
右键单击您的数据集并添加一个计算字段。转到字段属性>字段>添加,并添加以下描述您的方案的表达式:
=IIF(Fields!Number.Value < 50, "Bad", "Good")