Pergunta

Eu tenho as três tabelas a seguir:

1) Tabela de doçura

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) Tabela de nome da fruta

FruitIndex      FruitName
1               Apple
2               Orange
3               Peaches

3) Tabela de nome do país

CountryIndex    CountryName
1               UnitedStates
2               Canada
3               Mexico

Estou tentando realizar uma consulta Crosstab SQL para acabar com:

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

A parte desafiadora é rotular as linhas/colunas com os nomes relevantes das tabelas de nome.

Eu posso usar o acesso ao MS para projetar 2 consultas,

  1. Crie as junções da tabela de nomes de frutas/países com a tabela de doçura
  2. Realize a consulta Crosstab

No entanto, estou tendo problemas para fazer isso em uma única consulta. Eu tentei aninhar o SQL da 1ª Query no 2º, mas ele não parece funcionar.

Infelizmente, minha solução precisa ser totalmente SQL, pois é uma consulta SQL incorporada (não pode confiar no designer de consultas no MS Access, etc.).

Qualquer ajuda muito apreciada.

Prembo.

Foi útil?

Solução

Que tal:

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;

Outras dicas

Eu odeio confiar em um post externo e apresentá -lo como minha resposta, mas este é um tópico bastante íngreme e não posso fazer justiça. Então eu sugiro que você olhe para Este artigo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top