1
我有以下2個表:複雜的交叉表查詢問題
1)公司
ID CompanyName Abbreviation Notes
1 CompanyA CA ...
2 CompanyB CB ...
3 CompanyC CC ...
2)PlannedDeployments
ID CompanyID TypeID DepDate NumDeployed
1 1 2 09/2010 5
2 1 2 10/2010 5
3 1 3 09/2010 3
4 1 3 10/2010 3
5 1 4 10/2010 4
6 2 2 12/2010 10
7 2 4 10/2010 1
8 3 2 11/2010 6
注意TYPEID之間的號碼1和5描述了什麼類型的人正在部署。就本查詢而言,我對每個公司的Type2員工感興趣,然後對每個日期的類型3 & 4的總和感興趣。我最終想落得一個交叉表,看起來像下面這樣:
交叉
Date/Company CompanyA CompanyB CompanyC SumOfTypes3and4
09/2010 5 3
10/2010 5 8
11/2010 6
12/2010 10
的問題是,最後一列 - 3型和4型員工的總和。當前交叉表,我有包括不同之處在於總和柱一切,如下所示:
TRANSFORM Sum(PlannedDeployments.NumDeployed) AS ["NumDeployed"]
SELECT PlannedDeployments.DepDate
FROM PlannedDeployments LEFT JOIN Companies ON Companies.ID=PlannedDeployments.CompanyID
WHERE PlannedDeployments.TypeID=2 AND (PlannedDeployments.DepDate Between FormFieldValue("Form", "Control") AND FormFieldValue("Form", "Control"))
GROUP BY PlannedDeployments.DepDate
PIVOT Companies.CompanyName;
的第二部分即WHERE子句僅通過某種形式的控制的限制的數據。無論如何 - 我在收到最後一欄時遇到了很多麻煩。有人有主意嗎?
編輯:大廈由以下Remou提供的解決方案,這裏的最終查詢結束什麼看起來像:
TRANSFORM Sum(PlannedDeployments.NumDeployed) AS ["NumDeployed"]
SELECT PlannedDeployments.DepDate, q.SumOfNumDeployed
FROM (SELECT PlannedDeployments.DepDate, Sum(PlannedDeployments.NumDeployed) AS SumOfNumDeployed
FROM PlannedDeployments
WHERE (((PlannedDeployments.[TypeID]) In (3,4)))
GROUP BY PlannedDeployments.DepDate) AS q
RIGHT JOIN (PlannedDeployments
INNER JOIN Companies ON PlannedDeployments.CompanyID = Companies.ID)
ON q.DepDate = PlannedDeployments.DepDate
WHERE PlannedDeployments.TypeID=2
AND (PlannedDeployments.DepDate Between FormFieldValue("Form", "Control")
AND FormFieldValue("Form", "Control"))
GROUP BY PlannedDeployments.DepDate, q.SumOfNumDeployed
PIVOT Companies.CompanyName;
這讓我真正的接近,但它不完全正確。我在最後一欄中查找的是一個總結日期,這與我在上面的查詢中看到的並不完全相同。根據我的實際數據,我期待如下:1/2010:2,2/2010:2,3/2010:4,4/2010:6 而我得到的是:1/2010: 2,2/2010:4,3/2010:12,4/2010:24. – wtollett 2010-09-16 01:13:45
您需要受限於表單上日期的子查詢?如果是這樣,您可以將where語句添加到子查詢中。 – Fionnuala 2010-09-16 01:21:41
不是 - 我最後所要做的就是從第二行刪除Sum(),然後在倒數第二行的GROUP BY子句中添加'q.SumOfNumDeployed',數據看起來很完美。謝謝你的幫助。 – wtollett 2010-09-16 01:35:32