Как суммировать только одно из повторяющихся значений из объединенных данных в RDLC

Я не уверен, что SSRS глуп, или я (я склоняюсь к обоим).

У меня есть набор данных, который (в результате соединений и т. д.) имеет несколько столбцов с одинаковыми значениями, дублированными в каждой строке (довольно стандартный материал базы данных):

rid    cnt    bid   flg1   flg2
-------------------------------
4      2882   1     17     3
5      2784   1     17     3
6      1293   1     17     3
18     9288   2     4      9
20     762    2     4      9

Отчетность на основе cnt достаточно проста. Я также могу сделать табликс, который показывает следующее:

bid    flg1   flg2
------------------
1      17     3
2      4      9

(Где табликс сгруппирован по Fields!bid.Value, а столбцы просто Fields!flg1.Value и Fields!flg2.Value соответственно.)

Чего я не могу понять, так это того, как отобразить сумму этих значений — в частности, я хочу показать, что сумма flg1 равна 21, а сумма flg2 равна 12 — не сумма каждую строку в наборе данных (считая каждое значение более одного раза).

(Обратите внимание, что я не ищу сумму различных значений, так как они могут быть не уникальными. Мне нужна сумма одного значения из каждой группы bid, потому что это из объединения таблиц, поэтому они всегда будут иметь одно и то же значение.)

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

Очевидно, что Sum(Fields!flg1.Value) не является ответом, так как он либо возвращает 51 (если находится в первой строке внутри группы), либо 59 (если вне ее). Я также пробовал Sum(Fields!flg1.Value, "bid"), но это не считалось допустимой областью действия. Я также пробовал Sum(First(Fields!flg1.Value, "bid")), но, по-видимому, вам не разрешено суммировать первые значения по какой-то странной причине (и, возможно, в любом случае у вас была такая же проблема с областью действия).

Использование Sum(Max(Fields!flg1.Value, "bid")) действительно работает, но кажется неправильным. Есть лучший способ это сделать?

(Связано: есть ли хороший способ сохранить результат вычисления этого, чтобы позже я мог также показать сумму этих итогов без еще более сложного выражения?)


person Miral    schedule 30.09.2020    source источник


Ответы (1)


Есть два основных способа сделать это.

  1. Делай то, что уже сделал (Sum(Max(Fields!flg1.Value, "bid")))

  2. Суммируйте визуализированные значения. Для этого проверьте имя ячейки, содержащей нужные данные (проверьте ее свойства), а затем используйте что-то вроде =SUM(ReportItems!flg1.Value), где flg1 — это имя текстового поля, которое не обязательно всегда совпадает с именем поля.

person Alan Schofield    schedule 30.09.2020
comment
Интересно, что ReportItems не отображается в построителе выражений. - person Miral; 01.10.2020