簡體   English   中英

Micrisoft Access 每天在 30 分鍾內為每個用戶 ID 查找條目

[英]Micrisoft Access finds entries within 30 minutes of each other for each user ID everyday

我正在嘗試進行查詢,以顯示從一個 ID 彼此輸入 30 分鍾的任何條目。 表單本身需要 30 多分鍾才能完成,所以我試圖過濾那些可能剛剛通過它並標記它們的人。

例如,我希望它標記這個:在此處輸入圖像描述

我有一個表格,每天更新以下字段(每當有人輸入在線表格時):EMP ID、日期/時間戳(日期和時間)、SbjNum/表格編號、案例 ID 和總數。

我嘗試了以下操作: SQL 在彼此 5 分鍾內查詢日期時間

但它似乎拉了太多相同的sbjnum,從而使我想要的更多?

SELECT [QueDooblo].[EMP_ID] AS EMP_ID, [QueDooblo].[Date] AS [Date], [QueDooblo].[SbjNum] AS SbjNum, [QueDooblo].[R_ID] AS Case ID, [QueDooblo].[Total] AS Total
FROM (SELECT QueDooblo.[EMP_ID], QueDooblo.[Date], QueDooblo.[SbjNum], QueDooblo.[IncentiveAmount], QueDooblo.[SIGREFUSED_O1], QueDooblo.[R_ID], QueDooblo.[Total] FROM QueDooblo GROUP BY QueDooblo.[EMP_ID], QueDooblo.[Amount], QueDooblo.[Date], QueDooblo.[SbjNum], QueDooblo.[IncentiveAmount], QueDooblo.[SIGREFUSED_O1], QueDooblo.[R_ID], QueDooblo.[Total])  AS a
INNER JOIN QueDooblo AS b ON a.[EMP_ID] = b.[EMP_ID] 
WHERE (((DateDiff("n",[a].[Date],[b].[Date]))<30));

我試着做一個常規的 JOIN 但它不起作用......並在 Where WHERE (((DateDiff("n",[a].[Date],[b].[Date]))<30) AND a.[SbjNum] <> b.[SbjNum] AND a.[EMP_ID] <> 0);下添加WHERE (((DateDiff("n",[a].[Date],[b].[Date]))<30) AND a.[SbjNum] <> b.[SbjNum] AND a.[EMP_ID] <> 0);

我正在做的只是復制這些數據並放入 Excel 工作表並刪除重復項然后刪除任何其他重復信息

我還有另一個想法,也許我應該將日期/時間戳分開,這樣我就可以讓 Access 僅在 EMP ID = EMP ID 和日期相等時才可以找到,但時間彼此相隔 30 分鍾?

考慮一個相關的聚合子查詢來查找每個EMP_ID的最后一個時間戳,然后使用它從子查詢中進行查詢。 下面返回每個員工距離上次不到 30 分鍾的所有記錄:

SELECT  main.*,  DateDiff('n', main.last_date, main.[Date]) AS mins_elapsed
FROM 
     (SELECT q.*,
           (SELECT MAX(sub.[Date])
            FROM QueDooblo AS sub
            WHERE sub.[EMP_ID] = q.[EMP_ID]
              AND sub.[Date] < q.[Date]) AS last_date
      FROM QueDooblo q
    ) AS main
WHERE  DateDiff('n', main.last_date, main.[Date]) < 30
ORDER BY  main.EMP_ID, main.[Date];

如果您不希望員工在午夜填寫表格,請在相關子查詢中使用DateValue添加日期相等。

...
     (SELECT q.*,
           (SELECT MAX(sub.[Date])
            FROM QueDooblo AS sub
            WHERE sub.[EMP_ID] = q.[EMP_ID]
              AND DATEVALUE(sub.[Date]) = DATEVALUE(q.[Date])
              AND sub.[Date] < q.[Date]) AS last_date
      FROM QueDooblo q
    ) AS main

注意:相關的聚合子查詢很昂貴,因此會降低大型表的性能。 也許有一天 MS Access 會支持window 功能(請點贊和分享)? 為了提供幫助,如果在表單或報告后面使用,請考慮構建一個臨時表:

SELECT * INTO myTable FROM myQuery

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM