使用Access for Sales Variance Reporting - 查询问题

时间:2012-02-24 15:44:50

标签: sql ms-access

所以我想创建一个方差报告。 Simply sales - planned sales = variance等。

我有两个表,一个名为Actual,一个名为Plan。两者都有相同的字段,

-account code
-month
-year
-sales

我的想法是使用年份计划数据填充Plan表格,然后在实际进入时更新Actuals

我遇到的问题是,如何构建一个显示(1)计划外销售和(2)计划销售而不是实际销售的查询?我找不到这样做的连接类型。

或者我是否完全忽略了这一点以及更明显的做法?!

1 个答案:

答案 0 :(得分:0)

我不确定我是否理解这个问题。如果Actual中有时记录丢失,有时在Plan中缺少记录,则在UNION查询中将LEFT JOIN查询与RIGHT JOIN查询组合在一起。

SELECT
    P.*,
    A.sales - P.sales AS variance
FROM
    Plan P
    LEFT JOIN Actual A
        ON P.[account code] = A.[account code] AND
           P.month = A.month AND
           P.year = A.year
UNION ALL
SELECT
    A.*,
    NULL AS variance
FROM
    Plan P
    RIGHT JOIN Actual A
        ON P.[account code] = A.[account code] AND
           P.month = A.month AND
           P.year = A.year
WHERE
    P.[account code] IS NULL

WHERE子句避免重复,只选择第一个SELECT查询中缺少的记录。