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 originalSELECT
SUBSTRING(LEFT(CONVERT(CHAR(8), MAIN.FECHA, 108), 5), 1, 5) AS HORAS,
SUM (
CASE WHEN
(PAR.APLICACION = 'APLICACION_SSO_PAR' OR
PAR.APLICACION = 'APLICACION_PA_SSO_PAR' OR
PAR.APLICACION = 'APLICACION_PB_SSO_PAR') THEN MAIN.USUARIOS ELSE 0 END
) AS USUARIOS_PAR,
SUM (
CASE WHEN
(PAR.APLICACION = 'APLICACION_SSO_IMPAR' OR
PAR.APLICACION = 'APLICACION_PA_SSO_IMPAR' OR
PAR.APLICACION = 'APLICACION_PB_SSO_IMPAR') THEN MAIN.USUARIOS ELSE 0 END
) AS USUARIOS_IMPAR
FROM dbo.TABLA_APLICACIONES MAIN
WHERE CONVERT(CHAR(12), MAIN.FECHA, 103) = CONVERT(CHAR(12), getdate(), 103)
GROUP BY MAIN.FECHA
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