Consulta con dos tablas y varios COUNT
Hola compañeros del foro tengo este problema, he tratado de hacer una consulta con dos tablas y varios count, me explico, en la tabla tengo los siguientes campos:
TABLA REGISTRO REGNO (Integer) EMPID (Integer) EMPLEADO (varchar) FECHA (Date) ENTRADA (Time) SALIDA (Time) TARDANZA (Varchar) PERMISO (Varchar) LICENCIA (Varchar) EXCUSA (Varchar) ENFERMEDAD (Varchar) VACACIONES (Varchar) TABLA EMPLEADOS ID (Integer) NOMBRE (Varchar) TANDA (Integer) Estaba haciendo esta consulta:
Hasta ahí la consulta va bien pero a medias y yo quiero un reporte que me cuente las tardanzas, permisos, licencias, enfermedades, excusas y vacaciones de cada empleado. +----------------------+-------+-------+-------+ | EMPLEADO | DIAS | TARD | PER | +----------------------+-------+-------+-------+ | FERNANDO L. | 28 | 6 | 2 | | JUAN PEREZ | 26 | 8 | 4 | | ROSA SUAREZ | 30 | 1 | 0 | +----------------------+-------+-------+-------+ Ese es un ejemplo de cómo debería ser el reporte, estoy trabajando con Firebird 2.0 y Delphi 7. Saludos. |
Ahi te va...
|
Amigo PCicom, perdón por la tardanza, estaba ocupado en otro proyecto, vale, acabo de probar la sentencia, pues mira que me ha funcionado bien, pues me intrigaba si tomaría los valores nulos o no.
Fíjate, tengo otro caso con la misma sentencia, el campo EXCUSA se rellena con dos datos: [S] y [N], ¿como podría hacer el conteo por separado?, ¿con un subquery en el select?. Saludos. |
Saludos.
Para validar los valores nulos puedes utilizar COALESCE(COUNT(CAMPO),0). Para lo del campo Excusa utiliza la sentencia CASE .... WHEN con esto solucionas tu problema. Hasta luego. |
1 Archivos Adjunto(s)
Gracias Rolphy, haciendo uso del CASE...WHEN en cierto sentido me funciona, aqui dejo la sentencia:
Pero me esta sucediendo un problema, y es que me duplica los empleados en base a los datos del CASE...WHEN por separado, aqui dejo un ejemplo de como me está quedando. Archivo Adjunto 1289 lo que busco es todos los datos esten en una misma fila en un solo empleado. Bueno espero que con el ejemplo sea mas entendible, porque hoy estoy espeso para escribir. Saludos. |
Bueno, lo último que he hecho es lo siguiente:
Pero me cuenta todos: Cita:
Saludos. PD. No sé por qué el cuadro no me sale en orden. |
Asi o mas Simple....
Uff esto de pensar me esta cansando.... quemando neuronas.... free |
Gracias amigo PCicom, haciendole algunas modificaciones porque me daba errores de sintaxis, quedó así:
Pero aún así sigue el mismo problema, ya estoy casi cambiando la estructura de la tabla, deberé separar los datos en campos diferentes :eek:. Saludos. |
Saludos.
Porque utilizas el campo Excusa en el Group By? Intenta a sacar el campo y luego avisas como vas. |
Gracias amigo Rolphy, pues no me había fijado, ahora no me repite y caen en una sola fila, pero el conteo no es el correcto me da la misma cantidad que la columna Dias del Reporte.
Saludos. |
Saludos.
Enecumene trata con la siguiente sentencia:
Sustituye por SUM los COUNT y utilizas CASE para preguntar por el valor y cuéntanos luego. Suerte!!! |
La franja horaria es GMT +2. Ahora son las 16:28:14. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi