MS Access CrossTab 查询 - 跨 3 个表

Posted

技术标签:

【中文标题】MS Access CrossTab 查询 - 跨 3 个表【英文标题】:MS Access CrossTab query - across 3 tables 【发布时间】:2010-05-12 15:35:32 【问题描述】:

我有以下 3 个表:

1) 甜度表

FruitIndex       CountryIndex       Sweetness
1                1                  10
1                2                  20
1                3                  400
2                1                  50
2                2                  123
2                3                  1
3                1                  49
3                2                  40
3                3                  2

2) 水果名称表

FruitIndex      FruitName
1               Apple
2               Orange
3               Peaches

3) 国家名称表

CountryIndex    CountryName
1               UnitedStates
2               Canada
3               Mexico

我正在尝试执行 CrossTab SQL 查询以结束:

Fruit\Country       UnitedStates Canada      Mexico
Apple               10           20          400
Orange              50           123         1
Peaches             49           40          2

具有挑战性的部分是使用名称表中的相关名称标记行/列。

我可以使用 MS Access 来设计 2 个查询,

    创建将水果/国家/地区名称表与 Sweetness 表连接 执行交叉表查询

但是,我无法在单个查询中执行此操作。我尝试将第一个查询的 SQL 嵌套到第二个,但它似乎不起作用。

不幸的是,我的解决方案需要完全是 SQL,因为它是一个嵌入式 SQL 查询(不能依赖 MS Access 中的查询设计器等)。

非常感谢任何帮助。

前奏。

【问题讨论】:

【参考方案1】:

怎么样:

TRANSFORM First(Sweetness.Sweetness) AS FirstOfSweetness
SELECT Fruit.FruitName
FROM (Sweetness 
INNER JOIN Fruit 
ON Sweetness.FruitIndex = Fruit.FruitIndex) 
INNER JOIN Country 
ON Sweetness.CountryIndex = Country.CountryIndex
GROUP BY Fruit.FruitName
PIVOT Country.CountryName;

【讨论】:

太棒了!非常感谢雷穆。完美运行。【参考方案2】:

我讨厌依赖外部帖子并将其作为我的答案,但这是一个非常陡峭的话题,我无法做到公正。所以我建议你看看this article。

【讨论】:

以上是关于MS Access CrossTab 查询 - 跨 3 个表的主要内容,如果未能解决你的问题,请参考以下文章

将 Access Crosstab/PIVOT 查询转换为 T-SQL

过滤对 crosstab() 查询结果的意外影响

排序查询 Crosstab Postgres

MS access 使用相对路径查询多个 MS Access 数据库

Access数据库跨库查询及记录集区分

MS-Access 慢查询