在分组中访问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.
干杯!
我在 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 不喜欢子查询和交叉连接,我根据 :
创建了额外的 tableselect distinct employee_id,months.month
from TableA,months
给我一个交叉连接 table 然后我链接到 tableA.
干杯!