Microsoft Access 2007
Mostrar más instrucciones
1
Utilice la función DateDiff para calcular qué tan tarde un solo pago . Como un ejemplo muy simplificado , supongamos que hay dos tablas de la base de datos Access : Pedidos y atención al cliente. Cada cliente tiene un nombre y una identificación. Cada orden tiene un ID, un ID de cliente , una cantidad, una fecha de pedido y la fecha de pago. Si el pedido no se paga , la fecha de pago es nulo. El número de días que la orden de pago llega tarde es el número de días entre hoy y la fecha del pedido . Para obtener este valor en una consulta de Access , utilice la función DateDiff . Un ejemplo sería DateDiff ("d " , OrderDate , ahora) . La "d" indica a la función para contar el número de días (en lugar de meses , años, horas , minutos , etc.) El " ahora" en la llamada de función indica la fecha actual según el reloj del equipo . Un sub -select es una consulta de selección independiente anidado dentro de una consulta de selección existente. El sub - SELECT debe devolver un solo valor . He aquí un ejemplo de una consulta con un sub -select que le da sólo a los pedidos de menos de 30 días de retraso :
c.custname SELECT , ( SELECT sum ( o.Amount ) FROM Pedidos o DONDE datediff ("d " o.OrderDate , ahora) < 31 Y o.PaymentDate es nulo y o.CustomerID = c.ID ) como [ 30 días o Menos ], del cliente c ORDER BY
c.CustName Página 2 < p > Combinar subconsultas múltiples en una sola consulta de gran tamaño . Mediante la combinación de estos tipos de subconsultas , cada uno con un conjunto diferente de criterios , se crea un conjunto de columnas , donde cada columna tiene la cantidad total de los pagos de un cliente dado que llegan tarde por el número de días especificado. He aquí un ejemplo :
c.custname SELECT ( SELECT sum ( o.Amount ) FROM Pedidos o DONDE datediff ("d " , o.OrderDate , ahora) < 31 Y o.PaymentDate es nulo y o.CustomerID = c.ID ) como [ 30 días o menos ] , ( SELECT sum ( o.Amount ) FROM Pedidos o DONDE datediff ("d " , o.OrderDate , ahora) > 30 Y datediff ("d " , o.OrderDate , ahora) < 61 Y o.PaymentDate es nulo y o.CustomerID = c.ID ) como [ 31-60 días ] , ( SELECT sum ( o.Amount ) FROM Pedidos o DONDE datediff ("d " , o.OrderDate , ahora) > 60 Y datediff ("d " , o.OrderDate , ahora) < 91 Y o.PaymentDate es nulo y o.CustomerID = c.ID ) como [ 61-90 días ] , ( SELECT suma ( o.Amount ) FROM Pedidos o Donde datediff ("d " , o.OrderDate , ahora) > 90 Y datediff ("d " , o.OrderDate , ahora) < 121 Y o.PaymentDate es nulo y o. IdCliente = c.ID ) como [ 91 a 120 días ] , ( SELECT sum ( o.Amount ) FROM Pedidos o Donde datediff ("d " , o.OrderDate , ahora) > 120 Y o.PaymentDate es nulo y o. IdCliente = c.ID ) como [ 121 días o más] Desde cliente c ORDER BY c.CustName
Esta consulta dará 6 columnas : Nombre del cliente , el monto total de menos de 30 días de retraso , la cantidad de 31 a 60 días de retraso , 61 y 90 días , 91 y 120 días y más de 121 días de retraso. Una vez que la consulta se estableció la forma en que tiene que ser, guárdelo en Access.
3
Crear el informe. Una consulta guardada como la de arriba se puede utilizar como la base de un informe como si se tratara de una mesa . El asistente de informes se puede utilizar , la selección de la consulta guardada en lugar de las tablas.