У меня есть клиенты, которые могут существовать в трех возможных типах группы продаж, даже если они могут быть сгруппированы в несколько групп продаж. Какой тип группы продаж имеет хитрую логику. Существует три группы продаж: A, B, C. Пока клиент находится в одной из групп продаж A, они считаются A, если клиент не входит в группу продаж A, он может быть в группе B, если у них есть оба B и C, но могут рассматриваться только в C, если они имеют только C.
Так что, если бы у меня было несколько клиентов
Джо
Группа продаж 101 (A)
Группа продаж 102 (A)
Группа продаж 506 (С)
Джо считается A
Том
Группа продаж 307 (B)
Группа продаж 101 (A)
Том считается A
Rick
Группа продаж 333 (B)
Группа продаж 506 (С)
Рик считается B
Mary
Группа продаж 506 (С)
Мэри считается C
Как мне запустить формулу, которая выясняет, к какой группе они принадлежат, а затем создать кросс-таблицу или мою собственную таблицу, используя поля Поля итогов? (Я должен также упомянуть, что группе продаж даны иерархии, но даже если A для иерархии ниже, чем B или C для целей данного отчета, он все еще считается A)
Другие вещи, о которых следует знать:
- существует только одна группа продаж типа C, и она будет назначаться только один раз для клиента
- есть только 4 группы продаж типа А
- существует несколько групп продаж типа 4, но ни одному клиенту не будет назначено более 2 или 3 групп продаж типа B.
Я сгруппировал данные по клиенту, а затем суммировал приведенную ниже формулу (сброс для каждого клиента) в нижнем колонтитуле группы. Моя логика заключалась в том, что, поскольку C можно использовать только один раз, он получит 0, так как группа B будет только 2 или 3 раза, то получит 1, а группа A получит 10. Поэтому 0 будет производить C, что-нибудь между 1 и 9 будут производить B, а все 10 и выше будут производить A.
Подробнее
if {cust_billing.sales_group} in ["101", "102", "103", "104"] then 10
else if {cust_billing.sales_group} = "506" then 0
else 1
В нижнем колонтитуле группы
if {#RTotal0} = 0 then "C"
else if {#RTotal0} > 0 and {#RTotal0} < 10 then "B"
else if {#RTotal0} > 9 then "A"
Я не могу вытащить второе поле в кросс-таблицу или сосчитать его, используя другое поле промежуточного итога. Исходя из того, что я понял, поле создается во время печати и поэтому не может быть подсчитано.