MS Access Crosstab Consulta - em 3 mesas
-
26-09-2019 - |
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,
- Crie as junções da tabela de nomes de frutas/países com a tabela de doçura
- 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.
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.