MS Access SQL组合2个Pivot结果

时间:2014-12-30 22:12:40

标签: sql ms-access pivot

继续数据here,有没有办法添加其他列,例如,我有下表:

Date       Quantity       Type       Cost     Date_Entered
01/02/15   23             Orange     452      10/01/15
01/02/15   10             Red        287      10/01/15
01/02/15   18             Yellow     315      10/01/15
02/02/15   15             Yellow     299      10/01/15
02/02/15   19             Red        320      10/01/15
.          .              .          .        .
.          .              .          .        .

日期是预计销售的日历日期,数量是销售数量,类型是产品类型(这可能因类型数量而异),成本是产品的总销售额,Date_Entered是日期将数据放入表中并给出其他列的预测。对于每个Date_Entered,都有日期范围(比如整个2015)。对于每个日期,每种类型都可用。

我的想法是采用这种布局:

Date        Orange    Orange ($)  Red    Red ($)  Yellow  Yellow ($)
01/02/15    3         60           2      35       5       100
02/02/15    0         0           -2     -35      -1      -23
03/02/15    8         115         -1     -20       3       55
.           .         .            .       .       .       .
.           .         .            .       .       .       .

如果值是特定日期的销售数量从一个Date_Entered到另一个Date_Entered之间的差异(例如,一周,一个月,一个季度的预计销售额的变化)。

现在,在本文顶部的链接中,已建立查询以在两个表中获取这些值(一个表包含数量,另一个表包含“成本”)。但是,我很难看到如何使用MS Access SQL将它们组合成上面结果的一个查询。 TRANSFORM ... PIVOT只能在一列上运行,而SELECT似乎无法将枢轴结果作为子查询处理。是否更容易将两个表都输出到Excel中,然后只将列与VBA混合在一起?

此外,为每种类型设置一个平均列也很好,但我认为这对SQL要求太多了。

感谢您的回复。

1 个答案:

答案 0 :(得分:0)

正如您所说,不幸的是,Access中的交叉表只能在一个结果列上运行。

在Access中实现所需功能的一种方法是创建两个“创建表”查询,每个查询包含一个交叉表。重要的是,每个交叉表查询都需要一个唯一的主键(即如果这是日期,那么您必须确保每个交叉表每个日期只有一行)。

将两个交叉表结果作为表格后,您可以使用其他查询和PK字段加入它们。