0 votos

como optimizar esta consulta

SELECT dbo.LAB_MUESTRA.mues_id AS Id_Gruentec, dbo.LAB_MUESTRA.mues_rotulacion AS Id_Cliente, dbo.LAB_ccustodia.ccus_codigo AS OrdenTrabajo, 
               dbo.LAB_ccustodia.ccus_fecha_ini AS Fecha_Ingreso, dbo.LAB_MATRIZ.mat_descripcion AS Matriz, dbo.LAB_Tipo_Muestra.tm_descripcion AS Tipo, 
               dbo.GC_EMPRESA_CLIENTE.empr_nombre AS Cliente, dbo.GC_CATEGORIA_CLIENTE.cat_cli_nombre AS Categoria, 
               dbo.LAB_ccustodia.ccus_fecha_fin AS Fecha_Estimada_Entrega, dbo.LAB_MUESTRA.mues_report_fecha AS [Fecha Reporte], 
               dbo.LAB_MUESTRA.mues_fecha_analisis AS Fecha_Estimada_Termino_Análisis, ultimo_analisis.fecha AS ULTIMA_FECHA_ANALISIS, 
               dbo.LAB_MUESTRA.mues_login_crea AS Usuario_Creo, dbo.LAB_ccustodia.ccus_proyecto AS Proyecto, dbo.LAB_Est_Mues.est_mues_nombre AS Estado, 
               SUBSTRING(dbo.LAB_MUESTRA.mues_prioridad, 2, 20) AS Prioridad, CASE WHEN dbo.LAB_MUESTRA.mues_num_factura IS NULL OR
               dbo.LAB_MUESTRA.mues_num_factura = '' THEN 'NO' ELSE 'SI' END AS Factura, dbo.LAB_MUESTRA.mues_num_factura AS Numero_Factura, 
               dbo.LAB_MUESTRA.mues_fecha_factura AS Fecha_Factura, CASE WHEN mues_aprobada = 'TRUE' THEN 'Aprobada' WHEN (mues_aprobada = 'FALSE' OR
               mues_aprobada IS NULL) AND (mues_aprob_login IS NULL AND mues_aprob_fecha IS NULL) THEN NULL WHEN (mues_aprobada = 'FALSE' OR
               mues_aprobada IS NULL) AND (mues_aprob_cambio_obs IS NOT NULL) THEN 'Desaprobada' END AS Aprobada, 
               dbo.LAB_MUESTRA.mues_aprob_login AS Usuario_Aprobo, 
               CASE WHEN mues_desechada = 'TRUE' THEN 'SI' WHEN mues_desechada = 'FALSE' THEN 'NO' ELSE 'NO' END AS Desechada, dbo.LAB_MUESTRA.mues_clave, 
               dbo.LAB_MUESTRA.mues_aprob_fecha AS Fecha_Aprobada, CASE WHEN mues_aprob_fecha IS NULL THEN 'NO' ELSE CASE WHEN DATEDIFF(day, 
               mues_aprob_fecha, GETDATE()) >= 15 THEN 'SI' ELSE 'NO' END END AS Lista_Para_Desechar, dbo.LAB_MUESTRA.mues_desech_fecha AS Fecha_Desechada, 
               dbo.LAB_MUESTRA.mues_aprob_cambio_obs AS [Observacion Cierre Muestra], dbo.LAB_MUESTRA.mues_aprob_login_mod AS [Usuario Desaprobo], 
               dbo.LAB_MUESTRA.mues_aporb_fecha_mod AS [Fecha Desaprobo], dbo.LAB_MUESTRA.mues_reaprob_login_mod AS [Usuario Re-aprobo], 
               dbo.LAB_MUESTRA.mues_reaprob_fecha_mod AS [Fecha Re-aprobo], dbo.LAB_ccustodia.ccus_entregado_por AS MUESTREO, 
               CASE WHEN CAMBIOS.his_fecha_cambio IS NOT NULL THEN 'SI' ELSE NULL END AS Cambio, CAMBIOS.his_accion AS OBSERVACION_CAMBIO
FROM  dbo.LAB_MATRIZ WITH (NOLOCK) INNER JOIN
               dbo.LAB_Tipo_Muestra WITH (NOLOCK) ON dbo.LAB_MATRIZ.mat_clave = dbo.LAB_Tipo_Muestra.tm_cod_matriz INNER JOIN
               dbo.LAB_MUESTRA WITH (NOLOCK) INNER JOIN
               dbo.LAB_ccustodia WITH (NOLOCK) ON dbo.LAB_MUESTRA.mues_cod_ccustodia = dbo.LAB_ccustodia.ccus_clave ON 
               dbo.LAB_Tipo_Muestra.tm_clave = dbo.LAB_MUESTRA.mues_cod_tipo INNER JOIN
               dbo.GC_EMPRESA_CLIENTE WITH (NOLOCK) ON dbo.LAB_ccustodia.ccus_cliente = dbo.GC_EMPRESA_CLIENTE.empr_codigo INNER JOIN
               dbo.GC_CATEGORIA_CLIENTE WITH (NOLOCK) ON 
               dbo.GC_CATEGORIA_CLIENTE.cat_cli_codigo = dbo.GC_EMPRESA_CLIENTE.empr_cod_categoria_cliente INNER JOIN
               dbo.LAB_Est_Mues WITH (NOLOCK) ON dbo.LAB_MUESTRA.mues_estado = dbo.LAB_Est_Mues.est_mues_autonum OUTER APPLY
                   (SELECT CASE WHEN MAX(lmv_fecha_sistema_mod) > MAX(lmv_fecha_sistema_crea) THEN MAX(lmv_fecha_sistema_mod) 
                                   ELSE MAX(lmv_fecha_sistema_crea) END AS fecha
                    FROM   LAB_LOTMSVAR
                    WHERE lmv_cod_muestra = dbo.LAB_MUESTRA.mues_clave AND (mues_estado = 1 OR
                                   mues_estado = 2)) ultimo_analisis OUTER APPLY
                   (SELECT TOP (1) dbo.LAB_HIST_MUESTRAS.his_fecha_cambio, 
                                   dbo.LAB_HIST_MUESTRAS.his_accion + ' - ' + dbo.LAB_HIST_MUESTRAS.his_observacion AS his_accion
                    FROM   dbo.LAB_HIST_MUESTRAS WITH (NOLOCK)
                    WHERE dbo.LAB_MUESTRA.mues_clave = dbo.LAB_HIST_MUESTRAS.his_mues_clave AND (dbo.LAB_HIST_MUESTRAS.his_accion LIKE '%Parametros%' OR
                                   dbo.LAB_HIST_MUESTRAS.his_accion LIKE '%Fecha Análisis%')
                    ORDER BY his_fecha_cambio DESC) CAMBIOS
WHERE (dbo.LAB_MUESTRA.mues_activo = 1)

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X