Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/03/2011, 08:21
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Optimización de consulta con 1 sola tabla

Hola oscaral

No estoy seguro de qué es lo que estás tratando de obtener, pero creo que no hay necesidad de utilizar dos subconsultas, creo que se podría realizar con un solo select, pero para esto necesitaríamos que pusieras algunos datos de ejemplo, para poder plantear otra solución. De cualquiera manera te hago las siguientes recomendaciones:

- Trata en la medida de lo posible de evitar comparaciones LIKE, ya que estas son muy tardadas. En tu caso no sé por qué utilizas este operador cuando ni siquiera estás utilizando caracteres comodín (% o _). en lugar de eso deberías utilizar comparaciones = así:

Código:
AND (
PAR.APLICACION = 'APLICACION_SSO_PAR' OR
PAR.APLICACION = 'APLICACION_PA_SSO_PAR' OR
PAR.APLICACION = 'APLICACION_PB_SSO_PAR')
Te repito, creo que hay otras formas más óptimas para obtener la consulta que deseas hacer, pero depende de tus datos, por lo pronto te dejo una propuesta, no estoy seguro de que funciones pero más o menos así serías:

Código SQL:
Ver original
  1. SELECT
  2. SUBSTRING(LEFT(CONVERT(CHAR(8), MAIN.FECHA, 108), 5), 1, 5) AS HORAS,
  3. SUM (
  4. CASE WHEN
  5. (PAR.APLICACION = 'APLICACION_SSO_PAR' OR
  6. PAR.APLICACION = 'APLICACION_PA_SSO_PAR' OR
  7. PAR.APLICACION = 'APLICACION_PB_SSO_PAR') THEN MAIN.USUARIOS ELSE 0 END
  8. ) AS USUARIOS_PAR,
  9.  
  10. SUM (
  11. CASE WHEN
  12. (PAR.APLICACION = 'APLICACION_SSO_IMPAR' OR
  13. PAR.APLICACION = 'APLICACION_PA_SSO_IMPAR' OR
  14. PAR.APLICACION = 'APLICACION_PB_SSO_IMPAR') THEN MAIN.USUARIOS ELSE 0 END
  15. ) AS USUARIOS_IMPAR
  16. FROM dbo.TABLA_APLICACIONES MAIN
  17. WHERE CONVERT(CHAR(12), MAIN.FECHA, 103) = CONVERT(CHAR(12), getdate(), 103)
  18. GROUP BY MAIN.FECHA
  19. ORDER BY MAIN.FECHA

No estoy seguro de que funcione, pero haz la prueba y nos comentas. De cualquier manera publica algunos datos de ejemplo y dinos qué esperas de salida.

Saludos
Leo