寻找有关两个日期之间计算的帮助,并以价值标准滚动。
我的表名为
ODB_AC_PN_TRANSACTION_HISTORY
并在前3列中设置如下。最后一栏是我正在寻找的。 p>
我想根据PN列中的值知道记录的日期和上一个发生日期之间的天数
TRANSACTION (unique key) PN TRANSACTION_DATE Days
16/07/0312:53:02:04800 02A0016-32 15/07/2003 0
5/08/200314:47:53:5960 002A0016-32 1/08/2003 17
9/09/200315:06:50:0550 002A0016-32 29/08/2003 28
18/10/0315:02:08:4540 002A0016-32 23/09/2003 25
25/11/0309:38:41:7440 002A0016-32 21/11/2003 59
18/12/0314:14:39:3560 002A0016-32 12/12/2003 21
19/09/200713:40:39:8870 0050N1 14/08/2007 0
15/10/200714:49:39:3590 0050N1 20/09/2007 37
13/11/200710:39:57:1200 0050N1 17/10/2007 27
提前致谢
答案 0 :(得分:0)
我认为你有P / N的拼写错误 - 并且你的日期格式是基于你的系统格式。如果没有按正确顺序排序,则需要对年/月/日进行一些解析,然后使用DateSerial函数
Option Explicit
Public Sub UpdateTransactionDays()
Dim rs As DAO.Recordset
Dim strTransactionDate As String
Dim lngNumDays As Long
Dim strSQL As String
Dim strLastPN As String
Dim strLastDate As String
strSQL = "SELECT * FROM InputTableName ORDER BY PN, TRANSACTION_DATE"
Set rs = CurrentDb.OpenRecordset(strSQL, dbOpenDynaset)
With rs
Do While Not .EOF
strTransactionDate = ![Transaction_Date]
If strLastPN = !PN Then
lngNumDays = DateDiff("d", strLastDate, strTransactionDate)
Else
' First occurence
lngNumDays = 0
End If
Debug.Print lngNumDays
' Update Num Days since last transaction
.Edit
![Days] = lngNumDays
.Update
strLastDate = strTransactionDate
strLastPN = !PN
.MoveNext
Loop
.Close
End With
Set rs = Nothing
End Sub
答案 1 :(得分:0)
这可能是这样的查询:
SELECT
TRANSACTION,
PN,
TRANSACTION_DATE,
-DateDiff("d", TRANSACTION_DATE,
(Select Max(T.TRANSACTION_DATE) As PreviousDate
From ODB_AC_PN_TRANSACTION_HISTORY As T
Where
T.TRANSACTION_DATE < ODB_AC_PN_TRANSACTION_HISTORY.TRANSACTION_DATE
And
T.PN = ODB_AC_PN_TRANSACTION_HISTORY.PN)) As
Days
FROM
ODB_AC_PN_TRANSACTION_HISTORY
ORDER BY
PN Asc,
TRANSACTION_DATE Desc