在分组中访问VBA Return 0 即使没有匹配

Access VBA Return 0 in grouping even if there is no match

我在 access 数据库中有员工 table,他们工作的天数:

Table一个

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    

我需要的是最终 table 以及按项目按月完成的天数总和:

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

我按月份(日期)和工作天数进行分组 - 问题是我想显示所有月份 jan-dec - 月份和 0 如果员工在给定项目的给定月份没有任何工作日..

我尝试构建月份 table 并列出所有月份并正确加入它,但它没有帮助..

任何想法都会得到应用。

干杯! .....

我尽量避免 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 创建每个员工和每个月的矩阵。对于矩阵中的每个员工-月份组合,它可以选择查找项目小时数。

好的,我是根据 Andomar 的建议做的 - 但由于 Access 不喜欢子查询和交叉连接,我根据 :

创建了额外的 table
select  distinct employee_id,months.month
from TableA,months

给我一个交叉连接 table 然后我链接到 tableA.

干杯!