Teradata - Дело - РАЗДЕЛ - PullRequest
0 голосов
/ 05 июля 2018

у меня есть следующий запрос, который приносит для каждого party_id все связанные с business_party_id, их ежемесячное накопленное значение для каждого BP и ранг для этого значения. существует специальный business_party_id = 200, который, если у данного party_id имеется более 1 связанной business_party и что business_party_ занимает 1 место, а равен 200, тогда не должен учитываться, и ранг 2 для этого party_id должен рассматриваться как уровень 1 и перемещать 200 до уровня 2.

как я могу это сделать?

вот мой запрос

select party_id,
business_party_id, 
monthly_accum_event_amt,
Row_number() OVER (PARTITION BY  party_id ORDER BY  monthly_accum_event_amt  desc) orden

from (
    select * from P_DMT_VIEWS.BUSINESS_AGREEMENT_PAYROLL
    where LAST_DAY( payroll_dt) = '2018-05-31'
    and not business_payrroll_concept_val  in ('SUE004','SUE005','SUE00A')
    and monthly_event_qty<>0
    QUALIFY Row_number() OVER (PARTITION BY  business_party_id,party_id ORDER BY   monthly_event_qty desc  ) =1) a
...