Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date Access-如何计算订单之间的平均天数(无光标)_Date_Ms Access_Cursor_Average - Fatal编程技术网

Date Access-如何计算订单之间的平均天数(无光标)

Date Access-如何计算订单之间的平均天数(无光标),date,ms-access,cursor,average,Date,Ms Access,Cursor,Average,我想在access中创建一个查询,返回订单之间的平均天数。 表格结构为: 表名: 表列: 对表的简单查询将返回以下内容: 1 1131 01/01/2015 $235 2 1145 02/01/2015 $11 3 1131 03/01/2015 $256 4 1131 04/01/2015 $300 5 1146 05/01/2015 $25 6 1145 10/01/2015 $15 7 1145 20/01/2015 $4 8 1131 21/01/2015 $45 在这个例子中 cli

我想在access中创建一个查询,返回订单之间的平均天数。 表格结构为: 表名:

表列:

对表的简单查询将返回以下内容:

1 1131 01/01/2015 $235
2 1145 02/01/2015 $11
3 1131 03/01/2015 $256
4 1131 04/01/2015 $300
5 1146 05/01/2015 $25
6 1145 10/01/2015 $15
7 1145 20/01/2015 $4
8 1131 21/01/2015 $45
在这个例子中

client 1131 has orders on the days: 01/01/2015; 03/01/2015; 04/01/2015; 21/01/2015
client 1145 has orders on the days: 02/01/2015; 10/01/2015; 20/01/2015
client 1146 has orders on days: 05/01/2015
我想为每个客户创建一个查询,返回订单之间的平均天数:

1131 5
1145 6
1146 null
如果是sql server,我会使用游标,但在Access中,我不知道如何操作


有什么帮助吗?

在SQL Server中不需要光标。 话虽如此,请尝试下面的查询。 如果客户下了一个订单,逻辑上结果应该是0,而不是null。 Null应反映未下订单的任何客户

SELECT Orders.idClient, (Max(Orders.OrderDate)-Min(Orders.OrderDate))/Count(*) AS [Days between orders]
FROM Orders
GROUP BY Orders.idClient

在SQL Server中不需要游标。 话虽如此,请尝试下面的查询。 如果客户下了一个订单,逻辑上结果应该是0,而不是null。 Null应反映未下订单的任何客户

SELECT Orders.idClient, (Max(Orders.OrderDate)-Min(Orders.OrderDate))/Count(*) AS [Days between orders]
FROM Orders
GROUP BY Orders.idClient

创建如下查询:

Select
    idClient,
    Avg(DaysPast) As AverageOrderDays
From    
    (Select 
        idClient, 
        DateDiff("d",
                (Select Max(T.[Purchase Week]) 
                From Orders As T 
                Where T.idClient=Orders.idClient 
                And T.[Purchase Week] < Orders.[Purchase Week]),
            [Purchase Week]) AS DaysPast
    From 
        Orders) As OrderDays
Group By
    idClient

创建如下查询:

Select
    idClient,
    Avg(DaysPast) As AverageOrderDays
From    
    (Select 
        idClient, 
        DateDiff("d",
                (Select Max(T.[Purchase Week]) 
                From Orders As T 
                Where T.idClient=Orders.idClient 
                And T.[Purchase Week] < Orders.[Purchase Week]),
            [Purchase Week]) AS DaysPast
    From 
        Orders) As OrderDays
Group By
    idClient

作为参考,Access VBA中稍微等效的是一个记录集。作为参考,Access VBA中稍微等效的是一个记录集。感谢Rene,它似乎工作正常。所以,神奇之处在于执行maxorders.date-min orders.date/count*并按客户机分组;我说的对吗?谢谢你,雷内,它看起来很好用。所以,神奇之处在于执行maxorders.date-min orders.date/count*并按客户机分组;我说得对吗?