我在访问数据库中有员工表,其中包含他们工作的日期:
表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
我按月(日期)分组,工作天数总和 - 问题是我想显示所有月份jan-dec - 月份和0如果员工在给定项目的某个月没有工作日期..
我尝试建立月份表,列出所有月份,然后加入它,但它没有帮助..
任何想法都会得到满足。
干杯! .....
答案 0 :(得分: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
创建每个员工和每个月的矩阵。对于矩阵中的每个员工月组合,它可以选择查找项目时间。
答案 1 :(得分:1)
好的我是基于Andomar建议做的 - 但由于Access不喜欢子查询和交叉连接,我创建了基于以下内容的附加表:
select distinct employee_id,months.month
from TableA,months
它给了我一个交叉连接表,然后我链接到tableA。
干杯!