0

TblA TargetDate と TblB DepartmentName の 2 つのテーブルがあります。

2 つのテーブルは、RecNr、DierieNr、ReportMonth、ReportYear の 4 つのフィールドで構成される複合キーを使用して結合されます。

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