select * from (
                        select     env.id as envio_id,env.fecha_creacion as 'fecha_creacion_envio', env.ultimo_cambio as 'fecha_ultimocambio_envio', env.fecha_apertura, env.fecha_arribo, env.fecha_salida,
                                env.fecha_expiracion_salida as 'fecha_expiracion_salida', env.carga_contenedorizada as 'carga_contenedorizada', 
                                case 
                                    when env.oce = 'IMP' then 'Importación'
                                    when env.oce = 'EXP' then 'Exportación'
                                end as oce,
                                env.con_seguro as 'con_seguro', env.fecha_emision_seguro as 'fecha_emision_seguro', env.numero_poliza as 'numero_poliza', 
                                env.numero_aplicacion as 'numero_aplicacion', env.monto_aseguradora as 'monto_aseguradora',env.prima_bruta as 'prima_bruta',
                                env.prima_neta as 'prima_neta', env.dias_libres as 'dias_libres', env.descripcion as 'descripcion',
                                env.fecha_hora_derivacion_contabilidad as 'fecha_hora_derivacion_contabilidad',
                                env.secuencia_derivacion_contabilidad as 'secuencia_derivacion_contabilidad', 
                                case
                                    when env.canal_aforo = 'FI' then 'Físico'
                                    when env.canal_aforo = 'FT' then 'Físico Tecnológico'
                                    when env.canal_aforo = 'DO' then 'Documental'
                                    when env.canal_aforo = 'AU' then 'Automático' 
                                    when env.canal_aforo = 'AT' then 'Automático Tecnológico' 
                                    else 'No Definido'
                                end as 'canal_aforo',
                                env.numero_bl as 'numero_bl',
                                env.numero_master_bl as 'numero_master_bl',
                                env.total_refrendo as 'total_refrendo',
                                env.fecha_refrendo as 'fecha_refrendo',
                                env.observaciones_refrendo as 'observaciones_refrendo',    
                                if(env.cliente_id is not null,(select cli.razon_social from persona_persona cli where cli.id = env.cliente_id),'N/A')  as cliente,
                                if(env.agencia_carga_id is not null,(select age.razon_social from persona_persona age where age.id = env.agencia_carga_id),'N/A')  as agencia_carga,
                                if(env.aseguradora_id is not null,(select ase.razon_social from persona_persona ase where ase.id = env.aseguradora_id),'N/A')  as aseguradora,
                                if(env.auxiliar_id is not null,(select aux.razon_social from persona_persona aux where aux.id = env.auxiliar_id),'N/A')  as auxiliar,
                                if(env.linea_naviera_id is not null,(select lin.razon_social from persona_persona lin where lin.id = env.linea_naviera_id),'N/A')  as linea_naviera,
                                if(env.bodega_id is not null,(select bod.nombre from bodega_bodega bod where bod.id = env.bodega_id),'N/A') as bodega,
                                if(env.ejecutivo_id is not null,(select eje.username from auth_user eje where eje.id = env.ejecutivo_id),'N/A') as ejecutivo,
                                if(env.inspector_id is not null,(select insp.username from auth_user insp where insp.id = env.inspector_id),'N/A') as inspector,
                                if(env.operador_id is not null,(select oper.username from auth_user oper where oper.id = env.operador_id),'N/A') as operador_transportista,
                                case
                                    when env.status_workflow = 'TRANSMISION' then 'Transmisión'
                                    when env.status_workflow = 'WORKFLOW' then 'Inspección'
                                    when env.status_workflow = 'ENTREGA' then 'Workflow'
                                    when env.status_workflow = 'CONTABILIDAD' then 'Contabilidad'
                                    when env.status_workflow = 'ARCHIVO' then 'Archivo'
                                    else 'Sin Definir'
                                end as 'status_workflow',
                                env.booking_reserva as 'booking_reserva',
                                env.cut_off_documental as 'cut_off_documental',
                                env.cut_off_fisico as 'cut_off_fisico',
                                env.exonerado_pago_almacenaje as 'exonerado_pago_almacenaje',
                                env.fecha_zarpe_tentativa as 'fecha_zarpe_tentativa'
                        from envio_envio  env
                        #where env.id = 15
                    )envio 
                    
                    left join  (
                            select dat.envio_id as ce_envio_id, dat.fecha_creacion as 'fecha_creacion_enviocampoenvio', dat.fecha_creacion as 'ultimo_cambio_enviocampoenvio',
                                     (CASE WHEN (dat.nombre='fecha_transmision') THEN DATE(dat.valor) ELSE NULL END) AS fecha_transmision,
                                     (CASE WHEN (dat.nombre='numero_orden') THEN dat.valor ELSE NULL END) AS numero_orden,
                                     (CASE WHEN (dat.nombre='numero_refrendo') THEN dat.valor ELSE NULL END) AS numero_refrendo,
                                     #SUM(CASE WHEN (dat.nombre='canal_aforo') THEN dat.valor ELSE NULL END) AS canal_aforo,
                                     (CASE WHEN (dat.nombre='funcionario_responsable') THEN dat.valor ELSE NULL END) AS funcionario_responsable,
                                     (CASE WHEN (dat.nombre='salida_ajuste') THEN dat.valor ELSE NULL END) AS salida_ajuste,
                                     (CASE WHEN (dat.nombre='salida_notacredito') THEN dat.valor ELSE NULL END) AS salida_notacredito,
                                     (CASE WHEN (dat.nombre='numero_manifiesto') THEN dat.valor ELSE NULL END) AS numero_manifiesto,
                                     (CASE WHEN (dat.nombre='fecha_zarpe') THEN dat.valor ELSE NULL END) AS fecha_zarpe,
                                     (CASE WHEN (dat.nombre='peso_recibido') THEN dat.valor ELSE NULL END) AS peso_recibido,
                                     (CASE WHEN (dat.nombre='mrn') THEN dat.valor ELSE NULL END) AS mrn,
                                     (CASE WHEN (dat.nombre='fecha_derivacion_contabilidad') THEN dat.valor ELSE NULL END) AS fecha_derivacion_contabilidad
                                     
                             from (
                    
                                select     env_camp_env.envio_id,env_camp.id as id_envio_campo,env_camp_env.fecha_creacion, env_camp_env.ultimo_cambio,env_camp.nombre, env_camp.tipo,
                                        case 
                                            when env_camp.tipo = 'TEXTO' or env_camp.tipo = 'COMBO' then env_camp_env.valor_texto
                                            when env_camp.tipo = 'ENTERO' then env_camp_env.valor_entero
                                            when env_camp.tipo = 'DECIMAL' then env_camp_env.valor_decimal
                                            when env_camp.tipo = 'CHECK' then env_camp_env.valor_boolean
                                            when env_camp.tipo = 'REL_PER_FUNC' then env_camp_env.persona_id
                                            when env_camp.tipo = 'FECHA' then env_camp_env.valor_fecha
                                            when env_camp.tipo = 'FECHA_HORA' then env_camp_env.valor_fecha_hora
                                            else '--'
                                        end as 'valor'
                                from     envio_enviocampo env_camp,
                                        envio_enviocampoenvio env_camp_env
                                where env_camp.id = env_camp_env.enviocampo_id 
                                    #and env_camp_env.envio_id = 15
                            )dat group by dat.envio_id
                    )dat2 on envio.envio_id = dat2.ce_envio_id