1

我有一个包含员工出勤详细信息的表格。对于此示例,我们假设只有三种不同的出勤类型:“假日”/“银行假日”/“病假”。

我可以毫无困难地找到每个员工的总数,但是我需要结合“假日”和“银行假日”的结果。


例如,如果表格包含以下数据:

约翰 - '假期'</p>

约翰 - '银行假期'</p>

约翰 - “疾病”</p>

珍妮——“假期”</p>


结果应该是

名称 - Days Sick - Days Holiday

约翰 – 1 – 2

珍妮 - 0 - 1

4

3 回答 3

2

You can use IIF inside a SUM Statement to count certain conditions:

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];
于 2013-04-25T16:24:24.847 回答
1

我的两分钱价值:

而不是将这种类型的分类硬编码到查询中,您实际上应该创建一个 [AbsenceCategories] 表,其值如下......

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

...因此,当“最高管理层”向您发送备忘录,通知您必须单独跟踪“计划外缺勤”并将其归类为“假期”时,您只需将其添加到您的表中,您就不必更改所有查询等。

于 2013-04-25T17:10:30.413 回答
0

You want a conditional aggregation, something like:

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
于 2013-04-25T16:25:20.210 回答