Access 2007 - 在不使用交叉表查询的情况下“旋转”数据

Posted

技术标签:

【中文标题】Access 2007 - 在不使用交叉表查询的情况下“旋转”数据【英文标题】:Access 2007 - 'rotating' data without using a crosstab query 【发布时间】:2013-01-23 17:29:15 【问题描述】:

我有一个查询返回这样的数据:

Store    Product    CasesPerStore
Bob's    Original       2
Bob's    Super          1
Tom's    Original       5
Pete's   Original       9
Pete's   Super          2

我想将它加入到商店的另一个查询中,最终得到这个:

Other query headings....       Store    Original CasesPerStore    Super CasesPerStore
Other query data........       Bob's             2                        1
Other query data........       Tom's             5
Other query data........       Pete's            9                        2

我可以使用交叉表查询对原始数据执行此操作,但是我无法在连接中引用新的交叉表标题(例如 [Original CasesPerStore] 和 [Super CasesPerStore]),可能是因为它们是动态的,即标题可能会根据当时数据中的产品而改变。

那么我怎样才能加入这个“旋转”的数据呢?

【问题讨论】:

【参考方案1】:

如果您事先知道有多少产品,并且它们是永久固定的,那么这个简单的解决方案可能就足够了。通过使用Iif 语句,您可以绕过数据的旋转,但它是硬编码的 SQL。

SELECT tbl.Store,
   SUM(Iif([Product] = "Original", [CasesPerStore], 0)) AS [Original CasesPerStore],
   SUM(Iif([Product] = "Original", 0, [CasesPerStore])) AS [Super CasesperStore]
FROM   tbl
GROUP  BY tbl.Store

【讨论】:

是的,很有效,非常感谢 - 我昨晚想了一个类似的解决方案,但我从来没有使用过 Iif,所以如果没有帮助就不会到这个阶段。 :)

以上是关于Access 2007 - 在不使用交叉表查询的情况下“旋转”数据的主要内容,如果未能解决你的问题,请参考以下文章

基于包含子查询的查询的 ms-access 交叉表查询

从 MS Access 中将交叉表查询结果导出到 Excel

数据表视图中的 MS Access 表单交叉表查询

在 MS Access 2007 中对 ODBC 表导入 sql 查询

Access 2016:在反向交叉表查询中删除重复代码

TSQL 等效于 MS Access 交叉表查询