1 Вопрос: SSRS 2016 - Как рассчитать процентную разницу между двумя значениями в группе?

вопрос создан в Thu, May 2, 2019 12:00 AM

Я создаю отчет, который показывает продажи товара до диапазона дат и после диапазона дат.

Часть, с которой я столкнулся, - это процентная разница между общими продажами на дату 1 и дату 2.

У товаров не может быть продаж в течение определенной недели. Пользователь может выбрать несколько идентификаторов элементов в параметре идентификатора элемента.

Я могу обновить вопрос, чтобы при необходимости опубликовать свой SQL-запрос.

Что я пробовал

Поскольку я поместил группу в идентификатор элемента, я подумал, что функции First и Last будут работать.

Вот мое выражение в столбце PCT.

=(Last(Fields!total_sales1.Value, "Date1")- First(Fields!total_sales1.Value, "Date1")) / First(Fields!total_sales1.Value, "Date1") * 100 р>

Но когда я запускаю отчет, я получаю следующие результаты.

 введите описание изображения здесь

Мне нужно выражение для столбца PCT, которое даст мне процентную разницу для каждой пары элементов.

    
0
  1. я предполагаю, что вы используете SQL Server из-за тега ssrs-2016? я отредактировал вопрос и удалил его после того, как заметил, что у вас есть какое-то выражение, которое не является допустимым кодом SQL.
    2019-05-02 15: 18: 24Z
  2. В идеале вы должны добавить код SQL, пример данных и ожидаемые результаты .. см. Почему я должен предоставить MCVE для того, что мне кажется очень простой запрос SQL?
    2019-05-02 15: 19: 55Z
  3. Мои извинения, я отредактировал вопрос, чтобы удалить тег SQL. Я задавал вопрос о помощи с выражением в SSRS-2016 для расчета процентной разницы.
    2019-05-02 15: 35: 45Z
1 ответ                              1                         

Похоже, ваша область неверна. Проверьте, как называется группа строк, где вы группируете по идентификатору элемента (скажем, группа строк называется «yourItemRowGroupName»).

Затем измените выражение, чтобы использовать эту область, а не "Date1".

На самом деле вам может вообще не понадобиться область действия, так как она должна работать в пределах области, в которой находится выражение (в вашем случае, внутри вашей группы ItemID.).

Так что попробуйте

=(Last(Fields!total_sales1.Value)- First(Fields!total_sales1.Value)) / First(Fields!total_sales1.Value) * 100

или ..

=(Last(Fields!total_sales1.Value, "yourItemRowGroupName")- First(Fields!total_sales1.Value, "yourItemRowGroupName")) / First(Fields!total_sales1.Value, "yourItemRowGroupName") * 100

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

    
0
2019-05-02 22: 09: 30Z
  1. Да, это была проблема. Большое спасибо за Вашу помощь. Ошибка деления на ноль возникла, но я использовал выражение IIF для ее обработки.
    2019-05-03 16: 52: 04Z
источник размещен Вот