我有两个表:TblA TargetDate 和 TblB DepartmentName
这两个表使用由四个字段组成的复合键连接:RecNr、DirieNr、ReportMonth、ReportYear
TblA
RecNr, DiarieNr, ReportMonth, ReportYear, TargetDate, DepartmentName
1 1000 7 2013 01/08/2013 DeptA
2 1000 7 2013 01/10/2013 DeptA
3 1000 7 2013 01/08/2013 DeptC
1 3000 7 2013 01/07/2013 DeptB
2 3000 7 2013 01/09/2013 DeptB
3 3000 7 2013 01/01/2014 DeptA
TblB
RecNr, DiarieNr, ReportMonth, ReportYear, Completed
1 1000 7 2013 2013
2 1000 7 2013 2013
3 1000 7 2013 2013
1 3000 7 2013 2013
2 3000 7 2013 2012
3 3000 7 2013 2013
现在 - 我需要为 2013 年完成的条目创建每个部门的中位数摘要,如下所示:
Department Name TargetDate
DeptA 01/10/2013
DeptB 01/07/2013
DeptC 01/08/2013
我最好也是唯一的猜测是像下面的查询,但是当我在 Access 中运行 sql 时,系统会提示我提供 DepartmentName。所以我猜它没有从主查询中正确引用。
SELECT DISTINCT A.DepartmentName,
(SELECT TOP 1 TargetDate
FROM (
SELECT TOP 50 PERCENT TargetDate
FROM TblA A1
WHERE DepartmentName=A2.DepartmentName
ORDER BY A1.DepartmentName
) AS A2
WHERE A.DepartmentName=A2.DepartmentName
ORDER BY TargetDate
)
FROM TblB M
INNER JOIN TblA A ON M.ReportMonth=A.ReportMonth
AND M.ReportYear=A.ReportYear
AND M.DiarieNr=A.DiarieNr
AND M.RecNr=A.RecNr
WHERE A.DepartmentName<>'' AND YEAR(TblB.Completed)=2013