Сравнить набор данных с другим набором данных для нескольких столбцов / значений SSRS

Это ссылка на изображение. Позвольте мне объяснить сценарий.

Как вы можете видеть, есть два набора данных A и B, набор данных B имеет фактические значения тестов, а набор данных A имеет целевые значения (больше как диапазоны). Код сравнивает каждое значение теста (BLK ...) с целевым значением теста (BLK ...), код показан ниже

=IIF(Len(Lookup("UR_Limit",Fields!Limits.Value,Fields!BLK.Value,"Target")) <= 0,
(
IIF(Fields!BLK.Value > Lookup("UW_Limit",Fields!Limits.Value,Fields!BLK.Value,"Target"),"Yellow",
        IIF(Fields!BLK.Value < Lookup("LW_Limit",Fields!Limits.Value,Fields!BLK.Value,"Target"),"Yellow","Green"))
),

(
IIF(Fields!BLK.Value > Lookup("UR_Limit",Fields!Limits.Value,Fields!BLK.Value,"Target"),"Red",
    IIF(Fields!BLK.Value > Lookup("UW_Limit",Fields!Limits.Value,Fields!BLK.Value,"Target"),"Yellow",
        IIF(Fields!BLK.Value < Lookup("LR_Limit",Fields!Limits.Value,Fields!BLK.Value,"Target"),"Red",
            IIF(Fields!BLK.Value < Lookup("LW_Limit",Fields!Limits.Value,Fields!BLK.Value,"Target"),"Yellow","Green"))))
))

Теперь проблема, с которой я сталкиваюсь, заключается в том, что я не могу сравнить значения каждого теста продуктов (из B) с целевыми значениями этих конкретных продуктов в наборе данных A. В конечном итоге происходит то, что каждый тест в B сравнивается с последними значениями целевого продукта в наборе данных A.

1 ответ

Решение

Объединение полей продукта и лимита возможно, как указано в комментариях. Функция поиска может использовать любую строку, которую вы передаете, для поиска значения. Обратите внимание на следующий пример:

Lookup(Fields!Product.Value & "-" & "UR_Limit",...,"TestTargetDataSet")

Будет искать 905200-UR_Limit и вернуть BLK значение для верхнего предела из целевых значений теста. Конечно, вы должны создать вычисляемое поле в наборе данных TestTarget и установить его как объединение полей продукта и предела.

Я воссоздал ваш сценарий, используя предоставленные вами таблицы. Сначала я создал вычисляемое поле с именем PRLimit в наборе данных Test Target и задайте для него следующее выражение:

=Fields!Product.Value & "-" & Fields!Limits.Value

Как вы упомянули в комментариях, у вас есть несколько столбцов, вы должны использовать разные выражения для каждого столбца:

=Switch(
Fields!BLK.Value >
  Lookup(Fields!Product.Value & "-" & "UW_Limit",Fields!PRLimit.Value,Fields!BLK.Value,"DataSet9"),
  "Red",
Fields!BLK.Value >
  Lookup(Fields!Product.Value & "-" & "Target",Fields!PRLimit.Value,Fields!BLK.Value,"DataSet9"),
  "Yellow",
Fields!BLK.Value =
  Lookup(Fields!Product.Value & "-" & "Target",Fields!PRLimit.Value,Fields!BLK.Value,"DataSet9"),
  "Green",
Fields!BLK.Value <
  Lookup(Fields!Product.Value & "-" & "LW_Limit",Fields!PRLimit.Value,Fields!BLK.Value,"DataSet9"),
  "Red",
Fields!BLK.Value <
  Lookup(Fields!Product.Value & "-" & "Target",Fields!PRLimit.Value,Fields!BLK.Value,"DataSet9"),
  "Yellow"
)

=Switch(
Fields!BW.Value >
  Lookup(Fields!Product.Value & "-" & "UW_Limit",Fields!PRLimit.Value,Fields!BW.Value,"DataSet9"),
  "Red",
Fields!BW.Value >
  Lookup(Fields!Product.Value & "-" & "Target",Fields!PRLimit.Value,Fields!BW.Value,"DataSet9"),
  "Yellow",
Fields!BW.Value =
  Lookup(Fields!Product.Value & "-" & "Target",Fields!PRLimit.Value,Fields!BW.Value,"DataSet9"),
  "Green",
Fields!BW.Value <
  Lookup(Fields!Product.Value & "-" & "LW_Limit",Fields!PRLimit.Value,Fields!BW.Value,"DataSet9"),
  "Red",
Fields!BW.Value <
  Lookup(Fields!Product.Value & "-" & "Target",Fields!PRLimit.Value,Fields!BW.Value,"DataSet9"),
  "Yellow"
)

Вышеуказанные выражения используются для получения правильного цвета для столбцов BLK и BW соответственно. Используемая логика:

  • Если значение BLK больше, чем UW Значение BLK: цвет в красном
  • Иначе, если значение BLK больше, чем Target значение: Цвет в желтом
  • Иначе, если значение BLK равно Target значение: цвет в зеленый
  • Иначе, если значение BLK меньше, чем LW Значение BLK: цвет в красном
  • Иначе, если значение BLK меньше, чем Target Значение BLK: цвет в желтом

Это окончательный результат с данными, представленными в вашем вопросе:

Позвольте мне знать, если это помогает.

Другие вопросы по тегам