Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Select anidados???

Estas en el tema de Select anidados??? en el foro de Mysql en Foros del Web. Hola tengo otra pregunta Tengo esta consulta , pero deseo agregarle otra columna que me cuente solo los registros que cumplen con la condición del ...
  #1 (permalink)  
Antiguo 13/01/2009, 18:25
 
Fecha de Ingreso: abril-2008
Mensajes: 208
Antigüedad: 16 años
Puntos: 2
Select anidados???

Hola tengo otra pregunta

Tengo esta consulta , pero deseo agregarle otra columna que me cuente solo los registros que cumplen con la condición del select 2. El select 2 me cuenta los registros o id en los que se cumplen las condiciones del where (que para mi caso catalogo como errores)

Select 1
Código:
Select
distinct a.agente_evaluado agente,
Year(Fecha_evaluacion) as 'Año',
CASE 
WHEN MONTH(fecha_evaluacion) = 1 THEN "enero"
WHEN MONTH(fecha_evaluacion) = 2 THEN "febrero"
WHEN MONTH(fecha_evaluacion) = 3 THEN "marzo"
WHEN MONTH(fecha_evaluacion) = 4 THEN "abril"
WHEN MONTH(fecha_evaluacion) = 5 THEN "mayo"
WHEN MONTH(fecha_evaluacion) = 6 THEN "junio"
WHEN MONTH(fecha_evaluacion) = 7 THEN "julio"
WHEN MONTH(fecha_evaluacion) = 8 THEN "agosto"
WHEN MONTH(fecha_evaluacion) = 9 THEN "septiembre"
WHEN MONTH(fecha_evaluacion) = 10 THEN "octubre"
WHEN MONTH(fecha_evaluacion) = 11 THEN "noviembre"
WHEN MONTH(fecha_evaluacion) = 12 THEN "diciembre"
ELSE "NUUL_MES" END  AS MES ,
SUM(IF(ID_LLAMADA>0,1,0))`CANT EVALUACIONES`,

***Nueva columna  Cuenta registros que tiene errores *** AS ' Llamadas con errores',

sum(b.errores_fatales) as `Total Errores,
format(avg(b.NOTA_AREA_1),1) `ESTILO MANEJO LLAMADA`,
format(avg(b.NOTA_AREA_2),1) `ESTRUCTURA / HABILIDADES`,
format(avg(b.NOTA_AREA_3),1) `EFICIENCIA / CONOCIMIENTO`,
format(avg(b.NOTA_EVALUACION),1) `NOTA FINAL`
FROM evaluaciones a
INNER JOIN notas_evaluaciones b
ON a.id_evaluacion = b.id_evaluacion
where a.fecha_evaluacion between '2008/01/01' and  '2008/12/31'
And agente_evaluado like'%' 
GROUP BY agente,'año'
ORDER BY `agente_evaluado` asc, fecha_evaluacion asc;
Select 2
Código:
select 
 count(b.id_notas)
from evaluaciones a
inner join notas_evaluaciones b
on a.id_evaluacion = b.id_evaluacion
where a.fecha_evaluacion between '2008/01/01' and  '2008/12/31'
and(a.identifica_cliente='1'OR a.escucha_activa='1' OR a.asesorar='1'
OR a.conocimiento_producto='1' OR a.procedimientos='1' OR a.ingreso_datos='1')
Como inserto este segundo select en la consulta 1 ???

desde ya muchas gracias.

Chelo
  #2 (permalink)  
Antiguo 14/01/2009, 07:56
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Select anidados???

Entre parentesis!!!

Pero tienes que modificar el segundo select para que solo de los datos de un agente. Agregarle un where para que el agente sea el de cada registro de la consulta principal.

.....
where .....lo que tienes... and evaluaciones.agente_evaluado=a.agente_evaluado


cuidado con los alias en mi ejemplo "a" se refiere a la consulta principal...

Quim
  #3 (permalink)  
Antiguo 14/01/2009, 09:00
 
Fecha de Ingreso: abril-2008
Mensajes: 208
Antigüedad: 16 años
Puntos: 2
Respuesta: Select anidados???

Muchas gracias

aqui dejo como quedó la consulta, por si a alguien más le sirve el modelo. efectivamente tube que cambiar el alias, deje solo una fecha en el where de la consulta principal.

Código:
Select
  distinct a.agente_evaluado AGENTE,
  Year(Fecha_evaluacion) as 'Año',
  SUM(IF(ID_LLAMADA>0,1,0))`CANT EVALUACIONES`,
    (select 
    count(b.id_notas)
    from evaluaciones d
    inner join notas_evaluaciones b
    on d.id_evaluacion = b.id_evaluacion
    where (d.identifica_cliente='1'OR d.escucha_activa='1' OR d.asesorar='1'
    OR d.conocimiento_producto='1' OR d.procedimientos='1' OR d.ingreso_datos='1')
    and d.agente_evaluado=a.agente_evaluado) as 'ev con errores',
  sum(b.errores_fatales) as `T ERRORES FATALES`,
  format(avg(b.NOTA_AREA_1),1) `ESTILO MANEJO LLAMADA`,
  format(avg(b.NOTA_AREA_2),1) `ESTRUCTURA / HABILIDADES`,
  format(avg(b.NOTA_AREA_3),1) `EFICIENCIA / CONOCIMIENTO`,
  format(avg(b.NOTA_EVALUACION),1) `NOTA FINAL`
FROM evaluaciones a
INNER JOIN notas_evaluaciones b
ON a.id_evaluacion = b.id_evaluacion
where a.fecha_evaluacion between '2008/01/01' and  '2008/12/31'
And agente_evaluado like'%' 
GROUP BY agente,'AÑO'
ORDER BY `agente_evaluado` asc, fecha_evaluacion asc;
Como siempre muchas gracias
  #4 (permalink)  
Antiguo 14/01/2009, 13:19
 
Fecha de Ingreso: abril-2008
Mensajes: 208
Antigüedad: 16 años
Puntos: 2
Respuesta: Select anidados???

otra vez yo

He hecho una variación de la consulta anterior, la idea es agrupar por mes (la anterior era para el año) pero no me hace la suma del selec anidado

Código:
Select
distinct a.agente_evaluado AGENTE,
Year(Fecha_evaluacion) as 'Año',
CASE 
WHEN MONTH(fecha_evaluacion) = 1 THEN "enero"
WHEN MONTH(fecha_evaluacion) = 2 THEN "febrero"
WHEN MONTH(fecha_evaluacion) = 3 THEN "marzo"
WHEN MONTH(fecha_evaluacion) = 4 THEN "abril"
WHEN MONTH(fecha_evaluacion) = 5 THEN "mayo"
WHEN MONTH(fecha_evaluacion) = 6 THEN "junio"
WHEN MONTH(fecha_evaluacion) = 7 THEN "julio"
WHEN MONTH(fecha_evaluacion) = 8 THEN "agosto"
WHEN MONTH(fecha_evaluacion) = 9 THEN "septiembre"
WHEN MONTH(fecha_evaluacion) = 10 THEN "octubre"
WHEN MONTH(fecha_evaluacion) = 11 THEN "noviembre"
WHEN MONTH(fecha_evaluacion) = 12 THEN "diciembre"
ELSE "NUUL_MES" END  AS MES ,
SUM(IF(ID_LLAMADA>0,1,0))'TOTAL EVALUACIONES',
ID_LLAMADA'id EVALUACIONES',
(select 
    count(b.errores_fatales)
    from evaluaciones d
    inner join notas_evaluaciones b
    on d.id_evaluacion = b.id_evaluacion
    where (d.identifica_cliente='1'OR d.escucha_activa='1' OR d.asesorar='1'
    OR d.conocimiento_producto='1' OR d.procedimientos='1' OR d.ingreso_datos='1')
    and d.agente_evaluado=a.agente_evaluado
    and d.id_evaluacion = a.id_evaluacion) as 'TOT EVAL CON ERRORES FATALES',
SUM(b.errores_fatales) as 'TOT ERRORES FATALES',
format(avg(b.NOTA_AREA_1),1) `ESTILO MANEJO LLAMADA`,
format(avg(b.NOTA_AREA_2),1) `ESTRUCTURA / HABILIDADES`,
format(avg(b.NOTA_AREA_3),1) `EFICIENCIA / CONOCIMIENTO`,
format(avg(b.NOTA_EVALUACION),1) `NOTA FINAL`
FROM evaluaciones a
INNER JOIN notas_evaluaciones b
ON a.id_evaluacion = b.id_evaluacion
left join agentes c
oN a.agente_evaluado = c.nombre_agente
where a.fecha_evaluacion between '2008/01/01' and  '2008/12/31'
And a.agente_evaluado like'aguilar pacheco doris' 
and c.estado='activo'
and (c.tipo_turno='full time' or c.tipo_turno='part time')
GROUP BY  a.id_evaluacion
ORDER BY `agente_evaluado` asc, fecha_evaluacion asc;
em esta consulta mientras el Group by es por id_evaluación, me lista todos los registros, pero al cambiar el agrupamiento a mes, solo me lista el primer registro del mes, por lo que la columna 'TOT EVAL CON ERRORES FATALES' que sale del select anidado no entrega valores reales.

que falta??

una vez más gracias

Chelo
  #5 (permalink)  
Antiguo 15/01/2009, 01:51
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Select anidados???

Código:
Select
a.agente_evaluado as AGENTE,
Year(Fecha_evaluacion) as 'Año',
CASE 
WHEN MONTH(fecha_evaluacion) = 1 THEN "enero"
WHEN MONTH(fecha_evaluacion) = 2 THEN "febrero"
WHEN MONTH(fecha_evaluacion) = 3 THEN "marzo"
WHEN MONTH(fecha_evaluacion) = 4 THEN "abril"
WHEN MONTH(fecha_evaluacion) = 5 THEN "mayo"
WHEN MONTH(fecha_evaluacion) = 6 THEN "junio"
WHEN MONTH(fecha_evaluacion) = 7 THEN "julio"
WHEN MONTH(fecha_evaluacion) = 8 THEN "agosto"
WHEN MONTH(fecha_evaluacion) = 9 THEN "septiembre"
WHEN MONTH(fecha_evaluacion) = 10 THEN "octubre"
WHEN MONTH(fecha_evaluacion) = 11 THEN "noviembre"
WHEN MONTH(fecha_evaluacion) = 12 THEN "diciembre"
ELSE "NUUL_MES" END  AS MES ,
SUM(IF(ID_LLAMADA>0,1,0)) as 'TOTAL EVALUACIONES',
ID_LLAMADA as 'id EVALUACIONES', 
(select 
    count(b.errores_fatales)
    from evaluaciones d
    inner join notas_evaluaciones b
    on d.id_evaluacion = b.id_evaluacion
    where (d.identifica_cliente='1'OR d.escucha_activa='1' OR d.asesorar='1'
    OR d.conocimiento_producto='1' OR d.procedimientos='1' OR d.ingreso_datos='1')
    and d.agente_evaluado=a.agente_evaluado
    and d.id_evaluacion = a.id_evaluacion) as 'TOT EVAL CON ERRORES FATALES',
SUM(b.errores_fatales) as 'TOT ERRORES FATALES',
format(avg(b.NOTA_AREA_1),1) `ESTILO MANEJO LLAMADA`,
format(avg(b.NOTA_AREA_2),1) `ESTRUCTURA / HABILIDADES`,
format(avg(b.NOTA_AREA_3),1) `EFICIENCIA / CONOCIMIENTO`,
format(avg(b.NOTA_EVALUACION),1) `NOTA FINAL`
FROM evaluaciones a
INNER JOIN notas_evaluaciones b
ON a.id_evaluacion = b.id_evaluacion
left join agentes c
oN a.agente_evaluado = c.nombre_agente
where a.fecha_evaluacion between '2008/01/01' and  '2008/12/31'
And a.agente_evaluado like'aguilar pacheco doris' 
and c.estado='activo'
and (c.tipo_turno='full time' or c.tipo_turno='part time')
GROUP BY  a.agente_evaluado , a.id_evaluacion
ORDER BY `agente_evaluado` asc, fecha_evaluacion asc;
El agente creo que debe formar parte de la clausula group by si no esta no va a agrupar sus resultados y eliminar DISTINCT, al poner el agente en group by ya consigues que solo salga una vez cada agente.... en esta te dará el resultado de cada evaluación para el agente que tienes en el where, si quitas ese where te lo dará de cada agente...

En tu consulta anterior tambien tenias el distinct, no me di cuenta, como ya te he dicho no hace falta si pones el agante en el group by... veras que el resultado de la consulta anterior no varia si sacas el distinct

Quim
  #6 (permalink)  
Antiguo 15/01/2009, 11:29
 
Fecha de Ingreso: abril-2008
Mensajes: 208
Antigüedad: 16 años
Puntos: 2
Respuesta: Select anidados???

mmm me temo que no

Mira esta consulta me lista correctamente todos ( no un resumen del mes) los registros de cada mes, cuando en el group by tengo esto:
Código:
GROUP BY  a.agente_evaluado , a.id_evaluacion
Pero cuando cambio a esto, que es lo que necesito, que me tire un solo valor por mes y por agente:

Código:
GROUP BY  a.agente_evaluado , mes
me lista solo el primer registro del mes, y no me hace la suma de errores fatales en la columna 'TOT EVAL CON ERRORES FATALES' que lanza el select anidado.

En la primera consulta el group by era:
Cita:
GROUP BY agente,'AÑO'
y funciona correctamente, haciendo la suma del año para cada agente en la columna 'TOT EVAL CON ERRORES FATALES' que es lanzada por el select anidado.

Un cambio que hice entre el primer query y este, es que en el select anidad incluí otra clausula en el where para cruzar correctamente los datos
Cita:
where (d.identifica_cliente='1'OR d.escucha_activa='1' OR d.asesorar='1'
OR d.conocimiento_producto='1' OR d.procedimientos='1' OR d.ingreso_datos='1')
and d.agente_evaluado=a.agente_evaluado
and d.id_evaluacion = a.id_evaluacion) as
como siempre agradecido de su ayuda
  #7 (permalink)  
Antiguo 15/01/2009, 17:25
 
Fecha de Ingreso: abril-2008
Mensajes: 208
Antigüedad: 16 años
Puntos: 2
Respuesta: Select anidados???

HAber si logro explicar mejor lo que pasa.

este query levanta los datos agrupados por año para cada agente. OK (ignoren el Case y la columna mes )

Código:
Select
distinct a.agente_evaluado AGENTE,
Year(Fecha_evaluacion) as 'Año',
CASE 
WHEN MONTH(fecha_evaluacion) = 1 THEN "enero"
WHEN MONTH(fecha_evaluacion) = 2 THEN "febrero"
WHEN MONTH(fecha_evaluacion) = 3 THEN "marzo"
WHEN MONTH(fecha_evaluacion) = 4 THEN "abril"
WHEN MONTH(fecha_evaluacion) = 5 THEN "mayo"
WHEN MONTH(fecha_evaluacion) = 6 THEN "junio"
WHEN MONTH(fecha_evaluacion) = 7 THEN "julio"
WHEN MONTH(fecha_evaluacion) = 8 THEN "agosto"
WHEN MONTH(fecha_evaluacion) = 9 THEN "septiembre"
WHEN MONTH(fecha_evaluacion) = 10 THEN "octubre"
WHEN MONTH(fecha_evaluacion) = 11 THEN "noviembre"
WHEN MONTH(fecha_evaluacion) = 12 THEN "diciembre"
ELSE "NUUL_MES" END  AS MES ,
SUM(IF(ID_LLAMADA>0,1,0))as 'TOTAL EVALUACIONES',
(select 
    count(b.errores_fatales)
    from evaluaciones d
    inner join notas_evaluaciones b
    on d.id_evaluacion = b.id_evaluacion
    where (d.identifica_cliente='1'OR d.escucha_activa='1' OR d.asesorar='1'
    OR d.conocimiento_producto='1' OR d.procedimientos='1' OR d.ingreso_datos='1')
    and d.agente_evaluado=a.agente_evaluado     ) as 'TOT EVAL CON ERRORES FATALES',
SUM(b.errores_fatales) as 'TOT ERRORES FATALES',
format(avg(b.NOTA_AREA_1),1) as  `ESTILO MANEJO LLAMADA`,
format(avg(b.NOTA_AREA_2),1) as  `ESTRUCTURA / HABILIDADES`,
format(avg(b.NOTA_AREA_3),1) as  `EFICIENCIA / CONOCIMIENTO`,
format(avg(b.NOTA_EVALUACION),1) as  `NOTA FINAL`
FROM evaluaciones a
INNER JOIN notas_evaluaciones b
ON a.id_evaluacion = b.id_evaluacion
left join agentes c
oN a.agente_evaluado = c.nombre_agente
where a.fecha_evaluacion between '2008/01/01' and  '2008/12/31'
And a.agente_evaluado like'%' 
and c.estado='activo'
and (c.tipo_turno='full time' or c.tipo_turno='part time')
GROUP BY a.agente_evaluado, año ORDER BY a.agente_evaluado asc, fecha_evaluacion asc;
Ahora si a este mismo codigo le cambio el group by de año a id_evaluación, para que me muestre todas la evaluaciones por agente. tengo que agregarle al where del select anidado la condición de igualdad entre las dos consultas, caso contrario me devolvía el total del año para cada registro de es agente. Bien esto tambien ya está ok

Código:
Select
distinct a.agente_evaluado AGENTE,
Year(Fecha_evaluacion) as 'Año',
CASE 
WHEN MONTH(fecha_evaluacion) = 1 THEN "enero"
WHEN MONTH(fecha_evaluacion) = 2 THEN "febrero"
WHEN MONTH(fecha_evaluacion) = 3 THEN "marzo"
WHEN MONTH(fecha_evaluacion) = 4 THEN "abril"
WHEN MONTH(fecha_evaluacion) = 5 THEN "mayo"
WHEN MONTH(fecha_evaluacion) = 6 THEN "junio"
WHEN MONTH(fecha_evaluacion) = 7 THEN "julio"
WHEN MONTH(fecha_evaluacion) = 8 THEN "agosto"
WHEN MONTH(fecha_evaluacion) = 9 THEN "septiembre"
WHEN MONTH(fecha_evaluacion) = 10 THEN "octubre"
WHEN MONTH(fecha_evaluacion) = 11 THEN "noviembre"
WHEN MONTH(fecha_evaluacion) = 12 THEN "diciembre"
ELSE "NUUL_MES" END  AS MES ,
SUM(IF(ID_LLAMADA>0,1,0))as 'TOTAL EVALUACIONES',
(select 
    count(b.errores_fatales)
    from evaluaciones d
    inner join notas_evaluaciones b
    on d.id_evaluacion = b.id_evaluacion
    where (d.identifica_cliente='1'OR d.escucha_activa='1' OR d.asesorar='1'
    OR d.conocimiento_producto='1' OR d.procedimientos='1' OR d.ingreso_datos='1')
    and d.agente_evaluado=a.agente_evaluado 
    and d.id_evaluacion = a.id_evaluacion) as 'TOT EVAL CON ERRORES FATALES',
SUM(b.errores_fatales) as 'TOT ERRORES FATALES',
format(avg(b.NOTA_AREA_1),1) as  `ESTILO MANEJO LLAMADA`,
format(avg(b.NOTA_AREA_2),1) as  `ESTRUCTURA / HABILIDADES`,
format(avg(b.NOTA_AREA_3),1) as  `EFICIENCIA / CONOCIMIENTO`,
format(avg(b.NOTA_EVALUACION),1) as  `NOTA FINAL`
FROM evaluaciones a
INNER JOIN notas_evaluaciones b
ON a.id_evaluacion = b.id_evaluacion
left join agentes c
oN a.agente_evaluado = c.nombre_agente
where a.fecha_evaluacion between '2008/01/01' and  '2008/12/31'
And a.agente_evaluado like'%' 
and c.estado='activo'
and (c.tipo_turno='full time' or c.tipo_turno='part time')
GROUP BY a.agente_evaluado, a.id_evaluacionORDER BY a.agente_evaluado asc, fecha_evaluacion asc;
Bien ahora necesito los mismos datos pero agrupados por mes, entonces cambié el gropu by a mes , y hasta ahí no mas llego. he cambiado los filtros del where en el select anidado, probado de varias manera el group by y nada.

Código:
Select
distinct a.agente_evaluado AGENTE,
Year(Fecha_evaluacion) as 'Año',
CASE 
WHEN MONTH(fecha_evaluacion) = 1 THEN "enero"
WHEN MONTH(fecha_evaluacion) = 2 THEN "febrero"
WHEN MONTH(fecha_evaluacion) = 3 THEN "marzo"
WHEN MONTH(fecha_evaluacion) = 4 THEN "abril"
WHEN MONTH(fecha_evaluacion) = 5 THEN "mayo"
WHEN MONTH(fecha_evaluacion) = 6 THEN "junio"
WHEN MONTH(fecha_evaluacion) = 7 THEN "julio"
WHEN MONTH(fecha_evaluacion) = 8 THEN "agosto"
WHEN MONTH(fecha_evaluacion) = 9 THEN "septiembre"
WHEN MONTH(fecha_evaluacion) = 10 THEN "octubre"
WHEN MONTH(fecha_evaluacion) = 11 THEN "noviembre"
WHEN MONTH(fecha_evaluacion) = 12 THEN "diciembre"
ELSE "NUUL_MES" END  AS MES ,
SUM(IF(ID_LLAMADA>0,1,0))as 'TOTAL EVALUACIONES',
(select 
    count(b.errores_fatales)
    from evaluaciones d
    inner join notas_evaluaciones b
    on d.id_evaluacion = b.id_evaluacion
    where (d.identifica_cliente='1'OR d.escucha_activa='1' OR d.asesorar='1'
    OR d.conocimiento_producto='1' OR d.procedimientos='1' OR d.ingreso_datos='1')
    and d.agente_evaluado = a.agente_evaluado
    and d.id_evaluacion = a.id_evaluacion) as 'TOT EVAL CON ERRORES FATALES',
SUM(b.errores_fatales) as 'TOT ERRORES FATALES',
format(avg(b.NOTA_AREA_1),1) as  `ESTILO MANEJO LLAMADA`,
format(avg(b.NOTA_AREA_2),1) as  `ESTRUCTURA / HABILIDADES`,
format(avg(b.NOTA_AREA_3),1) as  `EFICIENCIA / CONOCIMIENTO`,
format(avg(b.NOTA_EVALUACION),1) as  `NOTA FINAL`
FROM evaluaciones a
INNER JOIN notas_evaluaciones b
ON a.id_evaluacion = b.id_evaluacion
left join agentes c
oN a.agente_evaluado = c.nombre_agente
where a.fecha_evaluacion between '2008/01/01' and  '2008/12/31'
And a.agente_evaluado like'%' 
and c.estado='activo'
and (c.tipo_turno='full time' or c.tipo_turno='part time')
GROUP BY a.agente_evaluado, mes ORDER BY a.agente_evaluado asc, fecha_evaluacion asc;
Por ejemplo si en el group by tengo mes, y en el where del select anidado no tengo puesta la condición "and d.id_evaluacion = a.id_evaluacion" la consulta me devuelve en la columna 'TOT EVAL CON ERRORES FATALES', el total de errores de ese usuario en el año. Ahora si agrego al where del select anidado "and d.id_evaluacion = a.id_evaluacion" la consulta me devuelve el valor del primer mes con registros para un usuario en particular.

Se agradece su paciencia y ayuda

Chelo
  #8 (permalink)  
Antiguo 16/01/2009, 06:24
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Select anidados???

No se si acabo de seguirte.... pero....

La logica es que en el select anidado se seleccione lo mismo que en el select principal....

Si el parincipal agrupa por agante y mes la subconsulta debe seleccionar los registros de cada grupo formado en el select principal....

Cita:
Entre parentesis!!!

Pero tienes que modificar el segundo select para que solo de los datos de un agente. Agregarle un where para que el agente sea el de cada registro de la consulta principal.

.....
where .....lo que tienes... and evaluaciones.agente_evaluado=a.agente_evaluado


cuidado con los alias en mi ejemplo "a" se refiere a la consulta principal...

Quim
eso es lo que te decia en el primer post.... si el registro generado por el select principal agrupa por agentes y evaluaciones, la subconsulta debe seleccionar por lo mismo....

Luego si el principal agrupa por agente y mes, la subconsulta debe seleccionar por lo mismo....

No conozco toda la estructura de tus tablas... pero obtener la fecha en la subconsulta sera facil ya que viene de la misma tabla (evaluaciones).

... la logica es clara.

Quim
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:10.