2015-08-24 33 views
2

我有天訪問數據庫的員工表上,他們已經上工作:訪問VBA返回0,即使沒有匹配分組

表A

employee_id | date_wrk | Project | Worked 
----------------------------------------- 
1 10  |01.01.2015|Project1 | 1 
2 10  |12.01.2015|Project1 | 0,5 
3 10  |01.02.2015|Project1 | 1  
4 10  |01.02.2015|Project2 | 1  
5 10  |04.02.2015|Project2 | 1 
6 12  |05.02.2015|Project2 | 1  

我需要的是決賽桌與天的總和月份完成的項目有:與天的總和

employee_id | Month | Project | Worked 
----------------------------------------- 
    10  |January | Project 1 | 1,5 
    10  |February | Project 1 | 1 
    10  |February | Project 2 | 2 
    10  |March | Project 1 | 0 

I組按月(日期)工作 - 問題是我要顯示所有月份一月至十二月 - 月和0,如果員工沒有按沒有當天在給定的項目給予一個月的工作..

我試圖建立個表中列出的所有個月,右連接,但它沒有幫助..

任何想法將appriciated。

乾杯! .....

回答

1

我儘量避免right join,因爲它不必要的混淆。

下面是一個例子left join方法:

select e.employee_id 
,  m.month 
,  a.project 
,  sum(a.worked) 
from (
     select distinct employee_id 
     from TableA 
     ) e 
,  MonthsTable m 
left join 
     TableA a 
on  a.employee_id = m.employee_id 
     and month(a.date_wrk) = m.month 
group by 
     e.employee_id 
,  m.month 
,  a.project 

cross join創建每個員工每個月的矩陣。對於矩陣中的每個員工月份組合,它可以選擇查找項目時間。

+0

感謝Andomar,這將工作,但我認爲交叉連接不支持訪問2015分貝:( – Siemasz

+0

你是對的!我只是谷歌搜索,你可以模擬'交叉連接'後'以逗號分隔的列表'...更新後的答案是否有效? – Andomar

+0

我試過這樣,但訪問返回:不支持連接表達式:'SELECT e.employee_id,a.project,m.month,Sum(a。[working]) from (選擇從表A )在線不同 僱員,月米 向左e.employee_id,a.project,米加入表A一個 上月(a.date_wrk)= m.month 和a.employee_id = m.employee_id 組.month' – Siemasz

1

好,我做到了立足Andomar建議 - 但由於訪問是不喜歡子查詢和交叉連接我創建附加表基於:

select distinct employee_id,months.month 
from TableA,months 

這給我一個交叉連接表,然後我鏈接到tableA。

乾杯!

+0

不錯的Access的禪宗走在陌生的路上,嘿嘿 – Andomar