首先建一表caseno,字段caseno,输入数据 1,2,3。。。。100
我的作品里都一个1到1000的序数表,很多特殊功能都靠这个表来操作
(别说不想要虚拟表)
原理就是靠空格来区分到底有几个姓名
select year(值班日期),姓名,count(*) as 值班次数
from (
select *,Instr(CaseNo+1,值班姓名&' ',' ') as lngMid,mid(值班姓名,CaseNo,lngmid-CaseNo) as 姓名
from caseno as c inner join 值班记录 as z on len(z.值班姓名)>=c.CaseNo
where mid(' '&值班姓名&' ',CaseNo,1)=' '
)
group by year(值班日期),姓名
试一试:
SELECT 值班年度,姓名, Count(AA.表达式1) AS 值班天数
FROM (SELECT DISTINCT 姓名表.姓名, 值班记录.值班日期, DLookUp("值班日期","值班记录","值班姓名 like '*" & [姓名] & "*' AND 值班日期=#" & [值班日期] & "#") AS 表达式1, Format([值班日期],"YYYY") AS 值班年度
FROM 姓名表, 值班记录)AS AA
GROUP BY AA.姓名,值班年度;