MS Access CrossTab查询 - 跨3个表

时间:2010-05-12 15:35:32

标签: sql ms-access embedded-database crosstab

我有以下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

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

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

  1. 使用Sweetness表创建水果/国家/地区名称表的连接
  2. 执行交叉表查询
  3. 但是我在单个查询中遇到这个问题。我试图将第一个查询的SQL嵌套到第二个,但它似乎不起作用。

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

    非常感谢任何帮助。

    Prembo。

2 个答案:

答案 0 :(得分: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;

答案 1 :(得分:0)

我讨厌依靠外部帖子并将其作为我的答案,但这是一个相当陡峭的主题,我无法正义。所以我建议你看一下this article