我有一张包含员工出勤详情的表格。在这个例子中,我们假设只有三种不同的出勤类型:'假日'/'银行假日'/'疾病'。
我可以毫不费力地找到每个员工的总数,但是我需要将“假日”和“银行假日”的结果结合起来。
e.g。如果表包含以下数据:
约翰 - '假日'
约翰 - '银行假日'
约翰 - '疾病'
珍妮 - '假日'
结果应为
姓名 - Days Sick - Days Holiday
约翰 - 1 - 2
珍妮 - 0 - 1
答案 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