0

我有两个表: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
4

1 回答 1

0

当你想使用alias表时,正确的语法是:FROM TblB As M

你错过了AS

您最好使用会自动生成正确语法的 Ms Access 查询设计器。

于 2013-07-25T10:28:00.650 回答