Получить значение между столбцами набора данных 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")