Получить значение между столбцами набора данных ssrs - PullRequest
0 голосов
/ 28 января 2019

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

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

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

50   70   Good 

70   100  Excellent 

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

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

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

Спасибо

Ответы [ 2 ]

0 голосов
/ 28 января 2019

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

Вот так ...

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

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

0 голосов
/ 28 января 2019

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

=IIF(Fields!Number.Value < 50, "Bad", "Good")
...