假设您只有固定数量的“成绩”,那么这将起作用。但是,我强烈建议尽可能在服务器上执行此类工作。
开始了...
我使用以下 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"
)
这给出了以下结果
如您所见,我们只需要比较每个案例的高值,第一个匹配将返回正确的注释。