我有以下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 个查询,

  1. 创建水果/国家名称表与甜度表的连接
  2. 执行交叉表查询

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

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

非常感谢任何帮助。

普雷姆博。

有帮助吗?

解决方案

怎么样:

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;

其他提示

我讨厌依赖外部帖子并将其作为我的答案,但这是一个相当陡峭的话题,我无法公正地回答。所以我建议你看看 本文.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top