0

我已经看到了一些接近的答案,我一直在尝试使它们适应 Access 2013,但我似乎无法让它发挥作用。我有两个疑问:

第一个查询返回

 original_staff_data
    Month
    Year
    staff_uid
    staff_abbrev
    employee_name
    staff_salary

它从表staff、salary_by_month、employee_name和number_of_days_at_spec_building中提取(这记录了他们工作时签到的地方)

transaction_data_by_staff.total
    Month
    Year
    staff_uid
    total_revenue
    totat_profit

这也从员工那里提取信息,但在事务表中对多个日期进行汇总,为每个 Staff_uid 创建累积值,因此我无法直接组合这两个查询。

我的问题是我想创建一个同时带来结果的查询。但是,并非第一季度的所有工作人员每天/每周/每月(假期等)都会在第二季度,因为我想最终创建一个最终结果:

Final_Result
    Month
    Year
    staff_uid
    staff_abbrev
    employee_name
    staff_salary
    total_revenue
    total_profit

SQL:

SELECT
  original_staff_data.*
, transaction_data_by_staff.total_rev
, transaction_data_by_staff.total_profit
FROM transaction_data_by_staff
RIGHT JOIN original_staff_data
ON (
  transaction_data_by_staff.year = original_staff_data.year
  AND transaction_data_by_staff.month = original_staff_data.month
) WHERE transaction_data_by_staff.[staff_uid] = [original_staff_data].[staff_uid];

如果该员工当月没有收入或利润,我希望它使这些值为 0。我已尝试加入(特别是 RIGHT 加入,Q1 作为 RIGHT 加入),但它似乎不起作用,我仍然只有得到子集。original_staff_data 查询中最初有 750 个条目,因此最终查询中应该有 750 个条目,我只得到 252,这是 transaction_data_by_staff 中的总数。关于 ACCESS 2013 SQL 的外观有什么线索吗?

谢谢乔恩

4

1 回答 1

1

通过 stuff_uid 将链接移动到 ON 子句,如下所示:

SELECT original_staff_data.*, transaction_data_by_staff.total_rev, transaction_data_by_staff.total_profit
FROM transaction_data_by_staff RIGHT JOIN original_staff_data ON (transaction_data_by_staff.year = original_staff_data.year) AND (transaction_data_by_staff.month = original_staff_data.month)
AND (((transaction_data_by_staff.[staff_uid])=[original_staff_data].[staff_uid]));
于 2013-09-24T05:11:32.603 回答