簡體   English   中英

如何從計數中排除行

[英]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.

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