【问题标题】:MS Access SQL Combining 2 Pivot ResultsMS Access SQL 结合 2 个数据透视结果
【发布时间】:2015-02-27 02:01:12
【问题描述】:

继续数据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 是预计销售的日历日期,Quantity 是销售数量,Type 是产品类型(这可能会因类型数量而异),Cost 是产品的总销售额,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 到另一个的差异(例如,一周、一个月、季度的预计销售额变化)。

现在,在本文顶部的链接中,已建立查询以在两个表中获取这些值(一个表包含数量,另一个表包含成本)。但是,我正在努力了解如何使用 MS Access SQL 将它们组合到一个查询中以获得上述结果。 TRANSFORM... PIVOT 只能对一列进行操作,而 SELECT 似乎无法将数据透视结果作为子查询处理。将两个表都输出到 Excel 中然后将列与 VBA 混合在一起是否更容易?

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

感谢您的任何回复。

【问题讨论】:

标签: sql ms-access pivot


【解决方案1】:

正如您所说的那样,很遗憾,Access 中的交叉表只能对一个结果列进行操作。

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

将两个交叉表结果作为表格后,您可以使用另一个查询和您的 PK 字段将它们连接起来。

【讨论】:

  • 感谢您的建议。但是,我想避免创建表。有没有办法即时操作数据?
  • 您可以尝试的另一件事是将交叉表加入另一个查询中,但我不确定这是否可行。
  • 已经试过了,但是无效。我认为数据库的想法是让数据准备好提取,而不是在导出过程中更改大部分数据。我将使用具有更多表的数据库端或具有多个查询的客户端操作来解决此问题。
猜你喜欢
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
  • 2013-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多