2013-07-25 36 views
0

我有兩個表: TBLA TargetDate和TBLB DepartmentName的訪問子查詢 - 值未引用

兩個表是使用複合密鑰,其包含四個字段加入: RecNr,DiarieNr,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 

回答

0

當你想使用一個表的alias,正確的語法是: FROM TBLB爲M

你錯過了AS

你會過得更好使用微軟的Access查詢設計器會自動生成正確的語法。

+0

感謝您的評論。在SQL標準中可以省略「AS」。 [鏈接](http://en.wikipedia.org/wiki/Alias_(SQL)) – ejepsen

+0

我嘗試使用女士訪問沒有'AS',沒有工作! –

+0

你是對的!爲簡化起見,上面的查詢已稍作修改。 – ejepsen