Объедините 2 вычисляемых поля в 1 вычисляемое поле в Таблице

Я пытаюсь объединить 2 вычисляемых поля в 1 вычисляемое поле в таблице.

1-е вычисляемое поле имеет формулу:

    SUM(IF [PRODUCT]="MA" THEN((IIF(YEAR([CARRIER_EFFECTIVE_DATE])=2018 AND 
YEAR([CALENDAR_DATE])<=2018, [TOTAL_COMMISSION],0))) END)/SUM(IF [PRODUCT]="MA" 
THEN((IIF(YEAR([CARRIER_EFFECTIVE_DATE])=2018 AND YEAR([CALENDAR_DATE])<=2018, 
[PAID_MEMBERS],0))) END)

2-е вычисляемое поле имеет формулу:

SUM(IF [PRODUCT]="MS"
THEN ((IIF(DATE([CARRIER_EFFECTIVE_DATE])=#2014-01-01# AND DATE([CALENDAR_DATE])
<=#2014-12-31#,[DATE_DEBIT_COMMISSION],0))) END)/ SUM(IF [PRODUCT]="MS"
THEN ((IIF (DATE([CARRIER_EFFECTIVE_DATE])>=#2014-01-01# AND 
DATE([CARRIER_EFFECTIVE_DATE])<=#2014-01-31#,[PAID_MEMBERS],0))) END)

Я создал эти 2 вычисления по отдельности, но когда я пытаюсь объединить вместе, я получаю сообщение об ошибке: «Невозможно смешивать агрегированные и неагрегированные сравнения или результаты в выражениях« ЕСЛИ »». Кто-нибудь может помочь в объединении этих двух вместе?


person user10119684    schedule 19.02.2019    source источник
comment
Можете ли вы опубликовать свою попытку комбинации? Тогда мы сможем это устранить.   -  person Oso    schedule 19.02.2019
comment
IF [PRODUCT] = MA THEN SUM (IF [PRODUCT] = MA THEN ((IIF (YEAR ([CARRIER_EFFECTIVE_DATE]) = 2018 AND YEAR ([CALENDAR_DATE]) ‹= 2018, [TOTAL_COMMISSION], 0))) END) / SUM (IF [PRODUCT] = MA THEN ((IIF (YEAR ([CARRIER_EFFECTIVE_DATE]) = 2018 AND YEAR ([CALENDAR_DATE]) ‹= 2018, [PAID_MEMBERS], 0))) END) ELSE SUM (IF [PRODUCT] = MS THEN ((IIF (DATE ([CARRIER_EFFECTIVE_DATE]) = # 2014-01-01 # AND DATE ([CALENDAR_DATE]) ‹= # 2014-12-31 #, [DATE_DEBIT_COMMISSION], 0))) END) / SUM ( IF [PRODUCT] = MS THEN ((IIF (DATE ([CARRIER_EFFECTIVE_DATE]) ›= # 2014-01-01 # AND DATE ([CARRIER_EFFECTIVE_DATE])‹ = # 2014-01-31 #, [PAID_MEMBERS], 0)) ) КОНЕЦ) КОНЕЦ   -  person user10119684    schedule 19.02.2019
comment
Я пробовал это, но он говорит, что нельзя смешивать агрегированные и неагрегированные сравнения или приводит к выражениям «ЕСЛИ».   -  person user10119684    schedule 19.02.2019
comment
Я тоже пробовал это, но это не работает   -  person user10119684    schedule 19.02.2019
comment
SUM (IF [PRODUCT] = MA THEN SUM (IF [PRODUCT] = MA THEN ((IIF (YEAR ([CARRIER_EFFECTIVE_DATE]) = 2018 AND YEAR ([CALENDAR_DATE]) ‹= 2018, [TOTAL_COMMISSION], 0))) END ) / SUM (IF [PRODUCT] = MA THEN ((IIF (YEAR ([CARRIER_EFFECTIVE_DATE]) = 2018 AND YEAR ([CALENDAR_DATE]) ‹= 2018, [PAID_MEMBERS], 0))) END) ELSE SUM (IF [PRODUCT ] = MS THEN ((IIF (DATE ([CARRIER_EFFECTIVE_DATE]) = # 2014-01-01 # AND DATE ([CALENDAR_DATE]) ‹= # 2014-12-31 #, [DATE_DEBIT_COMMISSION], 0))) END) / SUM (IF [PRODUCT] = MS THEN ((IIF (DATE ([CARRIER_EFFECTIVE_DATE]) ›= # 2014-01-01 # AND DATE ([CARRIER_EFFECTIVE_DATE])‹ = # 2014-01-31 #, [PAID_MEMBERS], 0 ))) КОНЕЦ) КОНЕЦ   -  person user10119684    schedule 19.02.2019
comment
Я получаю ту же ошибку, т. Е. Не могу смешивать агрегированные и неагрегированные сравнения или выдает выражения «ЕСЛИ».   -  person user10119684    schedule 19.02.2019
comment
У меня 2 продукта, я пытаюсь рассчитать наличные на одного платного участника. Я могу сделать это как отдельные поля, но это не работает, когда я объединяю 2 формулы   -  person user10119684    schedule 19.02.2019
comment
Можете ли вы попробовать рефакторинг двух операторов IF в один IF? Итак, если product = 'MA' AND Carrier date = 'x' AND Calendar Year = 2018 THEN Commission. У меня такое ощущение, что значения NULL могут быть возвращены одним из операторов if, который оценивает условие как NULL.   -  person SuperSecretAndHiddenFromWork    schedule 20.02.2019


Ответы (1)


В объединяющем операторе IF поле [Product] должно быть заключено в ATTR (), чтобы сделать его агрегацией. Нравится...

     IF ATTR([PRODUCT])="MA" ... 

Мой тест показывает, что расчет верен.

Вот полное вычисляемое поле, отредактированное из вашего оригинала.

IF ATTR([Product])="MA" 
THEN 
SUM(
    IF [Product]="MA" 
    THEN((IIF(YEAR([Carrier Effective Date])=2018 AND YEAR([Calendar Date])<=2018, [Total Commission],0))) 
    END)
/
SUM(
    IF [Product]="MA" 
    THEN((IIF(YEAR([Carrier Effective Date])=2018 AND YEAR([Calendar Date])<=2018, [Paid Members],0))) 
    END) 
ELSE 
SUM(
    IF [Product]="MS" 
    THEN ((IIF(DATE([Carrier Effective Date])=#2014-01-01# AND DATE([Calendar Date])<=#2014-12-31#,
        [Date Debit Commission],0))) 
    END)
/ 
SUM(
    IF [Product]="MS" 
    THEN ((IIF (DATE([Carrier Effective Date])>=#2014-01-01# AND DATE([Carrier Effective Date])<=#2014-01-31#,
        [Paid Members],0))) 
END) 
END
person MonteCarloSims    schedule 21.02.2019
comment
Удачи в этом? Если вы разобрались самостоятельно, добавьте ответ и поставьте зеленую галочку. - person MonteCarloSims; 24.02.2019