Contar palabra repetida de diferentes regs y mismo ID

Así está la cosa: Estoy Desarrollando una aplicación en VB6, SQL Server 2000 y a su vez también estoy usando Crystal Reports 8 para la elaboración y visualización de reportes.
Bueno en si mi duda y más bien la razón por la cual te escribo es porque ya realice todo lo que se puede llevar a cabo en programación para realizar mi proyecto, ahora el problema son los reportes. Lo que pasa es que no sé cómo obtener el número de retardos que tiene una persona, es decir, cuando una persona se registra pues inicia un proceso que dice en base a la hora si es un Status=OK o si es un Status=RE(que significa retardo).
Bueno pues obviamente cada vez que el usuario registra una asistencia el sistema agrega una nueva fila y le pone el ID de usuario, la fecha, la hora y el STATUS. Entonces lo que quiero realizar ahora para mi informe es contar ese número de retardos que el usuario tienen en toda la tabla. Ejemplo:
Nombre ID Tipo Num_Retardos
Pedro Perez POR 10 Doc 20
Anita Huerfanita 5 Admin 2
***Pero por el contrario lo que me sale es la suma de todos registros de todos los usuarios y por ende se repite ese valor en toda la columna de Num_Retardos. Ejemplo:
Nombre ID Tipo Num_Retardos
Pedro Perez X 10 Doc 168
Anita Huerfanita 5 Admin 168
****
La instrucción SQL que tengo o que estoy llevando a cabo desde CR es:
(SELECT COUNT(STATUS)FROM ASISTENCIAS WHERE CVE=ASISTENCIAS."CVE" AND STATUS='RE')
No se si cambie la instrucción o alguna cosa en CR porque esta instrucción o comando lo estoy llevando a cabo desde SQL y desde el Crystal SQL Designer y me sale bien.
¿Algo me faltará para hacerle notar a CR que lo quiero hacer ID por ID y no que me sume los "RE" de todos?

1 respuesta

Respuesta
Debes agregar un Group By ID eso te generara los totales por cada uno de los ID en la tabla.
Hola Experto!
Ya intente realizar lo que me dices pero sigue sin salir. La instrucción que realice en base a lo que me dijiste es la siguiente:
(SELECT COUNT(STATUS)FROM ASISTENCIAS WHERE CVE=ASISTENCIAS."CVE" AND STATUS='RE' GROUP BY ASISTENCIAS."CVE")
Pero me sale el siguiente error:
ODBC error: [Microsoft][ODBC SQL Server Driver][SQL Server] La subconsulta ha devuelto más de un valor, lo que no es correcto cuando va a continuación de =,!=,<,<=,>,>= o cuando se utiliza como expresión.
¿Estaré haciendo algo mal de nuevo?
Espero me puedas ayudar nuevamente. Gracias
Si usas eso como una subconsulta no te arroja 1 valor sino varios ese es el error que te esta diciendo el mensaje, supongo por los paréntesis que esa consulta la ejecutas dentro de otra, por eso el mnesaje.
Hola Experto!
Pues no, de hecho esa consulta está como una consulta (como tal) y no es una subconsulta. Esa instrucción la estoy realizando sola dentro de un SQL Expression Field tal y como te la escribí anteriormente. El hecho de que la ponga entre () es porque así es la sintaxis del SQL Expression, si le quito los () no me deja realizar la instrucción y me dice que tengo un error de sintaxis. Quizá no te comenté en que te tipo de campo lo estaba realizando y por eso no nos entendíamos, una disculpa. Si sabes de alguna manera en que pueda realizarlo ya sea a través de otro tipo de Campo o Fórmula, te pido nuevamente me ayudes y me mandes una manera de realizarlo.
... O si es posible y sabes como mandar esa consulta o los parámetros de la consulta de ese campo desde código VB6 para que a la hora de mostrar solo ejecutara la instrucción para calcular el valor del campo también me ayudaría mucho.
Gracias nuevamente.
Disculpame, pero no entiendo a que te refieres con "SQL Expression Field", ¿si estas utilizando VB6 supongo que quieres utilizar un cotrol enlazado a datos con ADODB o me equivoco?
Pues es es que como te comenté al principio de lo que fue mi duda, estaba usando Crystal Reports 8 y todo lo que te preguntaba se basaba en como llevar a cabo esas instrucciones en CR8. Pero creo no nos entendimos del todo bien.
Bueno pues para aquellos que si me entendieron y algún día llegaran a tener la misma duda, pues la manera en como me ayudaron a resolverlo fue Usando Vistas de SQL Server en las cuales ejecutamos las instrucciones necesarias para realizar el conteo(obvio con sintaxis o instrucciones SQL), después guardamos esa vista y la abrimos en CR como si fuera nuestra Fuente de datos, seleccionan la vista que guardaron y listo... Les aparecerán los campos que consideraron necesarios para realizar su reporte y realizar el conteo, solo arrastran campos como ya saben a la sección Detalles y listo.
Gracias Experto por tu ayuda, fue muy valiosa y de alguna manera me ayudó mucho en lo que estoy llevando a cabo.
Hasta pronto.
Ok, que bueno que pudiste encontrar solución a tu problema

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas