SELECT AA.num_ruc, MAX(CASE WHEN AA.prioridad_contacto = 1 then num_telefono else NULL end) telefono_1,
                    MAX(CASE WHEN AA.prioridad_contacto = 2 then num_telefono else NULL end) telefono_2,
                    MAX(CASE WHEN AA.prioridad_contacto = 3 then num_telefono else NULL end) telefono_3,
                    MAX(CASE WHEN AA.prioridad_contacto = 4 then num_telefono else NULL end) telefono_4,
                    MAX(CASE WHEN AA.prioridad_contacto = 5 then num_telefono else NULL end) telefono_5,
                    MAX(CASE WHEN AA.prioridad_contacto = 6 then num_telefono else NULL end) telefono_6,
                    MAX(CASE WHEN AA.prioridad_contacto = 7 then num_telefono else NULL end) telefono_7,
                    MAX(CASE WHEN AA.prioridad_contacto = 8 then num_telefono else NULL end) telefono_8,
                    MAX(CASE WHEN AA.prioridad_contacto = 9 then num_telefono else NULL end) telefono_9,
                    MAX(CASE WHEN AA.prioridad_contacto = 10 then num_telefono else NULL end) telefono_10,
                    MAX(CASE WHEN AA.prioridad_contacto = 11 then num_telefono else NULL end) telefono_11,
                    MAX(CASE WHEN AA.prioridad_contacto = 12 then num_telefono else NULL end) telefono_12
INTO TMP_TABLA_BACKUP_TEST
FROM (
     SELECT NUM_RUC, NUM_TELEFONO, SEGMENTO_CONTACTO, 
            ROW_NUMBER() OVER (PARTITION BY NUM_RUC ORDER BY prioridad_contacto ASC) prioridad_contacto, 
            flg_ce_ult6, flg_con_feedback, flg_bloque_fuente
     FROM MM_UNIVERSO_RUC_TEL_NUEVO
     WHERE (
         prioridad_contacto = 1                                                    -- lógica de negocio no descartamos números
    ) OR (
         prioridad_contacto > 1 and segmento_contacto not in ('5.Muy Bajo', '')    -- solo tomamos los números a partir del segundo que no sean Muy Bajos
    )
) AA
GROUP BY AA.num_ruc

Add a code snippet to your website: www.paste.org