2013-07-15 155 views
1

我想根據幾個表設置報告。如何生成此報告?

我有一個表Actual,看起來像這樣:

+--------+------+ 
| status | date | 
+--------+------+ 
| 5  | 7/10 | 
| 8  | 7/9 | 
| 8  | 7/11 | 
| 5  | 7/18 | 
+--------+------+ 

Targets看起來是這樣的:

+--------+-------------+--------+------------+ 
| status | weekEndDate | target | cumulative | 
+--------+-------------+--------+------------+ 
|  5 | 7/12  |  4 |   45 | 
|  5 | 7/19  |  5 |   50 | 
|  8 | 7/12  |  4 |   45 | 
|  8 | 7/19  |  5 |   50 | 
+--------+-------------+--------+------------+ 

分組的Actual記錄由Targets.weekEndDate他們下摔倒,我有以下骨料查詢GroupActual

+-------------+------------+--------------+--------+------------+ 
| weekEndDate | status | weeklyTarget | actual | cumulative | 
+-------------+------------+--------------+--------+------------+ 
| 7/12  | 5   |   4 |  1 |   45 | 
| 7/12  | 8   |   4 |  2 |   41 | 
| 7/19  | 5   |   5 |  1 |   50 | 
| 7/19  | 8   |   4 |  |   45 | 
+-------------+------------+--------------+--------+------------+ 

我試圖創建此報告:

+--------+------------+------+------+ 
| status | category | 7/12 | 7/19 | ...etc for every weekEndDate entry in Targets 
+--------+------------+------+------+ 
| 5  | actual  | 1 | 1 | 
| 5  | target  | 4 | 5 | 
| 5  | cumulative | 45 | 50 | 
+--------+------------+------+------+ 
| 8  | actual  | 2 |  | 
| 8  | target  | 4 | 5 | 
| 8  | cumulative | 45 | 50 | 
+--------------+------+------+------+ 

我可以使用交叉表查詢,使日期列,但我不知道如何對「實際」,「目標」行, 「累積」。它們不是同一個表中的值,這意味着(我認爲)交叉表查詢對此故障無效。我應該嘗試更改GroupActual,以便將數據放入我要查找的形狀中?樣的困惑,在那裏與這個未來去...

編輯:我做了對交叉表按高級用戶的解決方案了一些進展,但我有同一個Target麻煩。我修改了嚮導生成的SQL,試圖獲得我想要的,但沒有解決。我使用的版本爲GroupActual,只有weekEndDatestatusweeklyTarget列;這裏的SQL:

TRANSFORM weeklyTarget 
SELECT status 
FROM TargetStatus_forCrosstab_Target 
GROUP BY status,weeklyTarget 
PIVOT Format([weekEndDate],"Short Date"); 
+0

我是否明白這一點;您需要來自查詢GroupActual的Actual,以及來自表格目標的Target和Cumulative? –

+0

@JohnnyBones,是的,對於目標中的每個日期和狀態,我需要計算具有該狀態的實際條目在該日期之前的一週內有多少個實際條目,這是我用'GroupActual'完成的。具有挑戰性的部分是獲得一行中的實際計數和下一個中的目標。 – sigil

回答

1

你快到了。問題在於,你無法在單個交叉表中完成這一切。您需要製作3個交叉表(一個用於'實際',一個用於'目標',另一個用於'累積'),然後進行聯合查詢以將它們全部結合起來。

其他提示:在您的單個交叉表中,添加一個排序列。您的'實際'交叉表的Sort值爲1,'Target'的Sort值爲2,'Cumulative'的值爲3.這樣,當您將它們結合在一起時,您可以按照正確的順序。

+0

我已經得到了'Actual'制定了交叉,但我有麻煩'Target',因爲這些值並不需要做總結 - 他們只需要在每個日期欄進行佈局,分組通過'status'。我將發佈上面的SQL。 – sigil

+0

沒關係,我明白了。使用總和工作得很好,因爲我是基於'weekEndDate'分組的,每個日期只有一個值。確切地說,是 – sigil

+0

。我正試着想怎麼說。很高興有幫助。 – PowerUser