Contador en informes, no en BD

SELECT (SELECT COUNT(*) FROM Pacientes WHERE Pacientes.Nombre <> '') AS Nº, (Pacientes.Fecha_ingresoCli) AS [Fecha de Ingreso], (Pacientes.Nombre) AS Paciente, (Pacientes.Identificacion) AS [Doc Identidad], Pacientes.Cama, (Pacientes.Aseguradora) AS Responsable, Pacientes.Tratante, Pacientes.Diagnostico, Pacientes.Observaciones, ([Fecha_egresoCli]-[Fecha_ingresoCli]) AS [Días de Estancia], ([Fecha_egresoUCC]-[Fecha_ingresoUCC]) AS UCC
FROM Pacientes
WHERE (((Pacientes.Estado)='Dado de alta'));
Esa consulta tiene tres problemas:
1. El primer "factor", que es Select Count, cuenta los campos en la BD, y lo que quiero es que cuente las filas en el informe generado (Si el informe genera tres filas, entonces se mostrará el cntador en 1, 2 y 3 respectivamente.)
2. EL campo UCC debe devolver el valor de la resta:
*Si hay valor en egreso UCC: fecha_egresoUCC-fecha_ingresoUCC
*Si no ha egresado de UCC (es decir, si el campo fecha_egresoUCC==''): Ahora()-fecha_ingresoUCC
Por ahora sólo logro que me devuelva en el primer caso, no en el segundo.
3. Debe haber un contador de UCC que se muestre en el informe junto al campo de informe generado UCC. Por ejemplo: si el campo UCC es vacío, es decir, si el paciente no ha ingresado a UCC, no cuenta, pero en cualquier otro caso, que cuente. Pero el contador, así como el primero, debe ser sobre el informe, no sobre los registros de la BD.
¿Me podes ayuda con esto

1 Respuesta

Respuesta
1
Que BD estás haciendo. Si es oracle usa la función RowNum. Si es Access o SQL server hay que hacerlo por otras vías un poco más complicadas.
El punto 2 resuelvelo con un 'UNION ALL'
La primera parte la pones añades un where UCC is not null
la 2ª le marcas UCC Is null y haces la operación. 
Con eso lo tienes de una forma muy sencilla, el orden se pone solo en la 2ª parte de la query.
El punto 3 no lo entiendo muy bien. Lo normal es poner una función IIF para que te devuelva un 1 o un 0 y luego sumas, pero si lo quieres como 1, 2 3, hay que hacer subvistas y agregaciones.
Comentame la BD y vemos si no te vale lo que te he comentado alternativas.
Gracias por responder.
Bueno, inicialmente estas dudas eran en Access, pero debido a que necesito el manejo de usuarios y roles, cambié a MYSQL (con la aplicación phpmyadmin).
La verdad no me quedó del todo claro lo que me respondiste. ¿Me lo podes explicar mejor?
Gracias.
¿Cómo andas de conocimientos de SQL y que es lo que no entiendes?. Lo digo por ir al grano directamente.
Son básicos diría yo.
Pues te diría que te plantees hacerte un tutorial, es mejor dedicar unas horas a aprender SQL que es muy fácil y te va ayudar mucho en todo después. El SQL es la base de todo esto y por muchas preguntas que te conteste, si no tienes la base, al final terminarás complicándote.
Aquí tienes uno con buena pinta.
http://www.desarrolloweb.com/manuales/9/
Busca sobre como hacer sentencias de tipo UNION y comprenderás lo que te dije. Es una opción muy potente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas