Если у вас есть только фиксированное количество оценок, это сработает.Тем не менее, я настоятельно рекомендую выполнять этот тип работы на сервере, где это возможно.
Вот так ...
Я создал два набора данных 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 Это просто создает 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"
)
Это дает следующие результаты
![enter image description here](https://i.stack.imgur.com/tJp2k.png)
Как вы можете видеть, нам нужно только сравнить с высоким значением каждого случая,первый матч вернет правильный комментарий.