[英]How to exclude rows from count
我正在嘗試在 MS Access 中制作一個報告,以跟蹤延遲約會並在進行簡單查詢時遇到問題。 我的 SQL 生銹了,但這是我所擁有的:
SELECT Date, COUNT([DRC 1]) AS Delays
FROM Schedule
GROUP BY Date
HAVING (((Date) Between [Start Date] And [End Date]));
這會計算給定范圍內每天的所有約會並按日期組織它們,但我想排除按時開始的約會。 [DRC 1] 列包含另一個表中的數字代碼,其中包含約會遲到的不同原因。 代碼“0”表示“無延遲”。 我已經嘗試了幾件事,但都沒有奏效。 提前致謝!
編輯:這是我的表的一個例子供參考。
+————————+——————————+———————————————+————————————————+————————+—————————+—————+
|Date |Name |Sched. Time-In |Sched. Time-Out |Time-In |Time-Out |DRC 1|
+————————+——————————+———————————————+————————————————+————————+—————————+—————+
|2/3/2020|Doe, John |12:00 PM |12:30 PM |12:25 PM|12:49 PM |1 |
|2/3/2020|Ross, Bob |1:00 PM |1:30 PM |1:07 PM |1:34 PM |2 |
|2/3/2020|Doe, Jane |2:00 PM |2:30 PM |2:00 PM |2:27 PM |0 |
+————————+——————————+———————————————+————————————————+————————+—————————+—————+
它應該像添加 WHERE 子句一樣簡單,但它似乎只是忽略它並計算所有行。 我試過了:
WHERE [DRC 1] <> 0
WHERE [DRC 1] != 0
WHERE [DRC 1] > 0
WHERE [DRC 1] <> '0' (in case the column wasn't an INT)
WHERE [DRC 1] != '0' (")
甚至 MS Access 中的本機方法也讓我失望。 我開始認為這個問題可能是 Access 中的一些奇怪之處。
你能提供一些數據嗎? 但我覺得
SELECT Date, COUNT([DRC 1]) AS Delays
FROM Schedule
WHERE DRC <> 0
GROUP BY Date
HAVING (((Date) Between [Start Date] And [End Date]));
應該剪掉!
首先,在聚合之前而不是之后過濾日期。
其次,您也可以過濾WHERE
的“遲到”代碼。
所以:
SELECT Date, COUNT(*) AS Delays
FROM Schedule
WHERE Date Between [Start Date] And [End Date] AND
[DRC 1] <> 0
GROUP BY Date;
如果日期沒有延遲,則它不會出現在結果集中。 如果您希望所有天數都為0
,則:
SELECT Date, SUM(IIF([DRC 1] <> 0, 1, 0)) AS Delays
FROM Schedule
WHERE Date Between [Start Date] And [End Date]
GROUP BY Date
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.