Получить значение между столбцами набора данных ssrs

У меня есть такой набор данных:

Содержимое набора данных

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

50   70   Good 

70   100  Excellent 

Если у меня есть значение 75, мне нужно получить Превосходный, ища Набор данных. Я знаю о функции поиска, но это не то, что я хочу. Как я могу это сделать? Значения должны быть в процентах.

Примечание. Значение (75) - "Среднее по столбцу" ("Рассчитано"): оно рассчитывает оценку ученика по макс. И отметке ученика. Версия SQL Server 2016

Примечание 2: набор данных из базы данных, а не статические значения

Благодарю вас

2 ответа

Если у вас есть только фиксированное количество оценок, это сработает. Тем не менее, я настоятельно рекомендую выполнять эту работу на сервере, где это возможно.

Вот так...

Я создал два набора данных 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"
    )

Это дает следующие результаты

Как видите, нам нужно сравнивать только с высоким значением каждого случая, первое совпадение вернет правильный комментарий.

Щелкните правой кнопкой мыши на вашем наборе данных и добавьте вычисляемое поле. Перейдите в Свойства поля> Поля> Добавить и добавьте следующее выражение, которое описывает ваш сценарий:

=IIF(Fields!Number.Value < 50, "Bad", "Good")
Другие вопросы по тегам