Multiple conditions duplicates lines in the table
13:51 27 Jul 2021

I'm trying to cluster the clients based on the conditions of the case expression below, everything was going fine until I've added this - AND pbs.pb_plano_assinatura != "Anual" - after that, it duplicates some lines and the value of the column corresponded to this case expression becomes null. I would love any kind of advice on how to do this kind of operation as this query involves multiple joins so I think I can't turn it into a materialized view.

CASE 
  WHEN ((IF (o.order_created_at < pbs.pb_dt_onboarding, date(pbs.pb_dt_primeiro_onboarding), date(pbs.pb_dt_onboarding))) < date("2021-02-25") AND pbs.pb_plano_assinatura != "Anual") THEN "Mensal Antigo"
  WHEN ((IF (o.order_created_at < pbs.pb_dt_onboarding, date(pbs.pb_dt_primeiro_onboarding), date(pbs.pb_dt_onboarding))) >= date("2021-02-25") and (IF (o.order_created_at < pbs.pb_dt_onboarding, date(pbs.pb_dt_primeiro_onboarding), date(pbs.pb_dt_onboarding))) < date("2021-06-02") AND pbs.pb_plano_assinatura != "Anual") and pb_codigo_promocional is NULL THEN "Mensal Pgto Entrada"
  WHEN ((IF (o.order_created_at < pbs.pb_dt_onboarding, date(pbs.pb_dt_primeiro_onboarding), date(pbs.pb_dt_onboarding))) >= date("2021-06-02") AND pbs.pb_plano_assinatura != "Anual") THEN "Mensal Gratuidade" 
  WHEN ((IF (o.order_created_at < pbs.pb_dt_onboarding, date(pbs.pb_dt_primeiro_onboarding), date(pbs.pb_dt_onboarding))) >= date("2021-02-25") and (IF (o.order_created_at < pbs.pb_dt_onboarding, date(pbs.pb_dt_primeiro_onboarding), date(pbs.pb_dt_onboarding))) < date("2021-06-02") AND pbs.pb_plano_assinatura != "Anual") and pb_codigo_promocional is not NULL THEN "Mensal Cupom"  
  WHEN (pbs.pb_plano_assinatura = "Anual" AND p.value >= 250.0 AND p.status IN('RECEIVED' ,'CONFIRMED', 'RECEIVED_IN_CASH') AND p.originalDueDate = min(p.originalDueDate) over (partition by pbs.pb_id)) OR PBS.pb_id = 'ddcdff35-a044-5ccc-a65d-7e51692b269a' THEN "Anual Entrada" 
  WHEN ((IF (o.order_created_at < pbs.pb_dt_onboarding, date(pbs.pb_dt_primeiro_onboarding), date(pbs.pb_dt_onboarding))) < date("2021-02-25"))AND(pbs.pb_plano_assinatura = "Anual" AND p.value < 250.0 AND p.status IN('RECEIVED' ,'CONFIRMED', 'RECEIVED_IN_CASH') AND p.originalDueDate = min(p.originalDueDate) over (partition by  pbs.pb_id)) THEN "Mensal Antigo"
  WHEN ((IF (o.order_created_at < pbs.pb_dt_onboarding, date(pbs.pb_dt_primeiro_onboarding), date(pbs.pb_dt_onboarding))) >= date("2021-02-25")and (IF (o.order_created_at < pbs.pb_dt_onboarding, date(pbs.pb_dt_primeiro_onboarding), date(pbs.pb_dt_onboarding))) < date("2021-06-02")) and pb_codigo_promocional is NULL AND(pbs.pb_plano_assinatura = "Anual" AND p.value < 250.0 AND p.status IN('RECEIVED' ,'CONFIRMED', 'RECEIVED_IN_CASH') AND p.originalDueDate = min(p.originalDueDate) over (partition by  pbs.pb_id)) THEN "Mensal Pgto Entrada"
  WHEN ((IF (o.order_created_at < pbs.pb_dt_onboarding, date(pbs.pb_dt_primeiro_onboarding), date(pbs.pb_dt_onboarding))) >= date("2021-06-02"))AND(pbs.pb_plano_assinatura = "Anual" AND p.value < 250.0 AND p.status IN('RECEIVED' ,'CONFIRMED', 'RECEIVED_IN_CASH') AND p.originalDueDate = min(p.originalDueDate) over (partition by  pbs.pb_id)) THEN "Mensal Gratuidade"
  WHEN ((IF (o.order_created_at < pbs.pb_dt_onboarding, date(pbs.pb_dt_primeiro_onboarding), date(pbs.pb_dt_onboarding))) >= date("2021-02-25")AND (IF (o.order_created_at < pbs.pb_dt_onboarding, date(pbs.pb_dt_primeiro_onboarding), date(pbs.pb_dt_onboarding))) < date("2021-06-02")) and pb_codigo_promocional is not NULL AND(pbs.pb_plano_assinatura = "Anual" AND p.value < 250.0 AND p.status IN('RECEIVED' ,'CONFIRMED', 'RECEIVED_IN_CASH') AND p.originalDueDate = min(p.originalDueDate) over (partition by  pbs.pb_id)) THEN "Mensal Cupom" 
  END as pb_safra,  
sql google-bigquery case