MS Access SQL - 如果字段与两个条件中的任何一个匹配,则计数

时间:2013-04-25 16:12:05

标签: sql ms-access count criteria

我有一张包含员工出勤详情的表格。在这个例子中,我们假设只有三种不同的出勤类型:'假日'/'银行假日'/'疾病'。

我可以毫不费力地找到每个员工的总数,但是我需要将“假日”和“银行假日”的结果结合起来。


e.g。如果表包含以下数据:

约翰 - '假日'

约翰 - '银行假日'

约翰 - '疾病'

珍妮 - '假日'


结果应为

姓名 - Days Sick - Days Holiday

约翰 - 1 - 2

珍妮 - 0 - 1

3 个答案:

答案 0 :(得分:2)

您可以在SUM语句中使用IIF来计算某些条件:

SELECT  [YourTable].[Name],
        SUM(IIF([YourTable].[Attendance] = 'Sickness', 1, 0)) AS [Days Sick],
        SUM(IIF([YourTable].[Attendance] IN ('Holiday' , 'Bank-Holiday'), 1, 0)) AS [Days Holiday]
FROM    [YourTable]
GROUP BY [YourTable].[Name];

答案 1 :(得分:1)

我的两分钱值得:

不是将这种类型的分类硬编码到查询中,而是真的应创建一个[AbsenceCategories]表,其值为......

AbsenceType     AbsenceCategory
-----------     ---------------
Sickness        Sick
Holiday         Holiday
Bank-Holiday    Holiday

...所以,当“最高管理层”向您发送备忘录,告知您必须单独跟踪“未安排的缺勤”并将其归类为“假日”,然后您只需将其添加到您的桌面即可,无需更改你的所有疑问等等。

答案 2 :(得分:0)

您需要条件聚合,例如:

select name,
       sum(iif(which = 'Sickness', 1, 0)) as SickDays,
       sum(iif(which = 'Holiday' or which = 'Bank Holiday', 1, 0)) as Holiday
from t
group by name