Consulta de totales entre fechas access

Quiero realizar una consulta de totales que, entre un período de fechas, me indique los valores específicos de un campo y el total de registros por es fecha. Es decir por ejemplo, que entre las fechas 01/01/2022 al 05/01/2022 me cuente los registros de un campo que contengan el caracter b del total de registros por fecha. El resultado que necesito sería el siguiente:

fecha - total_campo_contiene_b - total_campos

01/01/2022 - 5 - 115
02/01/2022 - 3 - 112
03/01/2022 - 7 - 117
04/01/2022 - 4 - 110
05/01/2022 - 8 - 121

Ahora me sale y lo tengo hecho pero solo por un día. El problema es que no se implementar la consultar entre el periodo de fechas dado que el contador no se actualiza.

2 Respuestas

Respuesta
1

Creo que la respuesta se debe complementar gráficamente y con un ejemplo, la idea esta dada pero es incompleta.

TABLA

Tabla en donde tengo registros del 1 al 5 de julio de 2022, y diseño una consulta para agrupar por día en el rango del 1 al 4 y contar por día aquellos registros que en alguna parte del texto tengan la letra "b", además, mostrar la cantidad de registros en general de ese día. Por ejemplo, el la fecha 1/07/2022 tengo 4 registros pero únicamente en alguna parte del campo "texto" tienen la letra "b" 3 registros.

DISEÑO DE LA CONSULTA

RESULTADO DE LA CONSULTA

Observe que efectivamente me ha agrupado por día sin incluir el día 5/07/2022 y me indica cuántos registros tienen la letra "b" en alguna parte del texto y cuántos registros tuvo esa fecha.

Se puede modificar para que la letra no sea la misma, lo mismo que el rango de fechas, si lo hace mediante SQL tendrá más flexibilidad. Si quiere el ejemplo lo puede solicitar a [email protected] favor en el asunto anotar la consulta.

Se supone que el usuario no tiene conocimientos avanzados de SQL y dudo que el código propuesto funcione. En este caso la ilustración y utilizar la cuadricula le facilita la comprensión del resultado esperado.

Respuesta
1

Para que Access diferencie los días, la consulta ha de ser de agrupación y agrupar por el campo con las fechas.

Para seleccionar el intervalo:
Hay diversas formas de condicionarlo, la clásica es poner como condición que sea superior o igual a la fecha de inicio a la vez que inferior o igual a la fecha final.

O con Between que en el generador de consultas grafico se escribiría algo así:

Entre #1/6/2021# y #30/5/2022#
Si estamos en una consulta de agrupación, se puede duplicar el campo con las fechas, en lugar de 'Agrupar por'  ==> se selecciona ==> 'Donde'  y bajo el la condición.

Siguiendo con la consulta de agrupación, se dispone de varias posibilidades creativas a aplicar en lugar de 'agrupar por' entre ellas las de contar y de sumar (además de primero, ultimo ...)

Buenas tardes y gracias por contestar. Hasta ahí ok, ya he conseguido mediante consulta de agrupación y la opción dónde, poner el intervalo de fechas. El problema es que me sale bien el campo tipo cuenta que continene b (como "*b*"), pero cuando quiero poner la totalidad de registros me sigue aplicando la opción dónde. Cómo puedo hacer un count(*) por fecha sin que me aplique el between del intervalo de fechas??? Ahora me sale así (en negrita debería de ser la totalidad por cada fecha...):

01/01/2022 - 5 - 5
02/01/2022 - 3 - 3
03/01/2022 - 7 - 7

Si se desea obtener un dato que este 'fuera de las condiciones' lo que se me ocurre es utilizar una función de dominio y (en la agrupación) utilizar 'expresión' para que la evalúe de forma independiente.

Eso puede ser costoso (en tiempo y recursos) y se apreciara cuando aumenten los datos, es el momento de plantearse dividir en etapas el calculo, esto es:

Calcular entre fechas y sobre ese resultado una nueva consulta que calcule el resto.

Al disminuir el conjunto de datos, el calculo será mas rápido.

Los gráficos e imágenes solo le son indispensables a los que carecen de imaginación.
Si se esta 'fuera de las condiciones': la función DCount.
Si se esta 'dentro' de las condiciones: ... un poco de imaginación.
Y para dar la respuesta completa: mejor en formato SQL.
En ella:
No solo admite una letra, admite textos
Al solicitar la fecha con parámetros se evita tener que verificar si los datos de fecha son correctos

___________________________________________________________________________
PARAMETERS f_inicio DateTime, f_fin DateTime, letra Text ( 255 );
SELECT Datos_0.Fecha, Sum(Abs(InStr([notas],[LETRA])<>0)) AS Tienen_B, Count(Datos_0.ID) AS Todos
FROM Datos_0
GROUP BY Datos_0.Fecha
HAVING (((Datos_0.Fecha) Between [F_Inicio] And [F_Fin]));

Inestimable Eduardo:
La SQL propuesta ha sido creada con el editor de consultas de Access, basta iniciar una consulta, ponerla en 'Vista SQL' y pegar el contexto (eso si con los nombres de tablas y campos adecuados).

Lamento que tu simpleza te impida entender soluciones creativas y no tienes (por lo menos a momento actual) capacidad para juzgar los conocimientos ajenos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas