2017-08-26 8 views
0

je les colonnes et les valeurs de tableau ci-dessous ...msaccess 2007 SQL requête complexe

ColA, ColB, ColC 
b, 90, 1 
p, 95, 5 
p, 100, 6 
p, 99, 6 
p, 98, 6 
b, 94, 5 
b, 93, 1 
b, 92, 3 
o, 89, 3 
b, 88, 4 

J'ai besoin du jeu de résultats suivant:

ColA, ColB, ColC 
b, 90, 1 
b, 93, 1 
p, 95, 5 
o, 89, 3 

Essentiellement, il est la valeur la plus basse pour colC où ColA est le même. Donc, la valeur la plus faible pour tous les b est 1, et il se produit dans deux rangées. La valeur la plus basse pour tous les p est 5, et la valeur la plus basse pour tous les o est 3. ColB est une valeur à joindre sur une autre table. J'ai donc besoin d'une requête qui se joindra à une autre table sur ColB.

Merci.

Répondre

1

Essayez cette

select mainTable.* from abcTable as mainTable inner join 
(select t.colA,min(t.colC) as minColC from abcTable as t group by t.ColA) as minimumTable 
on mainTable.colA=minimumTable.ColA and mainTable.colC=minimumTable.minColC 
+0

Ça l'a fait! Merci Eid! – user2184214

+0

Eid - Je ne veux plus la deuxième ligne de résultat 'b'. Je veux juste la ligne où ColA est groupé, qui a la plus basse valeur ColC; et s'il y a égalité, alors le ColB le plus élevé détermine l'égalité. Et s'ils se lient sur ColC et ColB, alors ne retournez qu'une rangée et je m'en fous. Peux-tu faire ça? – user2184214

+0

sélectionnez mainTable.colA distinct, max (mainTable.ColB), mainTable.ColC de abcTable comme mainTable jointure interne (sélectionnez t.colA, min (t.colC) comme minColC de abcTable comme t groupe par t.ColA) comme minimumTable sur mainTable.colA = tableTable.ColA et mainTable.colC = tableTable.minColC groupe par mainTable.colA, mainTable.ColC –

0

Et voilà!

with r1 as 
(select * 
,rank() over (partition by ColA order by ColC) fix 
from aba 
) 

select * from r1 where fix = 1 
+0

Êtes-vous sûr MS Access suports 'RANK()'? – lad2025

+0

Je ne pense pas que MSAccess 2007 supporte cela. – user2184214

+0

Les gens utilisent encore MS Access? Je pensais que c'était MS SQL Server. Pardon! – natec