2017-08-26 12 views
0

...MSACCESS 2007 SQL複雑なクエリ

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 

私は、次の結果セットが必要です。

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

は基本的に、これはどこCOLC最安値であり、 ColAは同じです。したがって、すべてのbの最小値は1で、2行で発生します。すべてのpの最小値は5で、すべてのoの最小値は3です.ColBは別のテーブルで結合する値です。だから私はColB上の別のテーブルに参加するクエリが必要です。

ありがとうございました。

答えて

1

この

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

それでした!ありがとう! – user2184214

+0

Eid - もう2番目の 'b'の結果行は必要ありません。私は、ColAがグループ化されている行を必要とします.ColCの値が最も低くなります。ネクタイがある場合は、最も高いColBがネクタイを決定します。そして彼らがColCとColBを結んでいれば、1つの行しか返さず、私は気にしません。それはできますか? – user2184214

+0

mainTable.colA、main(mainTable.ColB)、mainTable.ColCをメインテーブルとして選択します。inner join (t.colAでtColAを選択し、tColCによってtグループとしてabcTableからminColCを選択します。)as leastTable mainTable.colAでの = minimumTable.ColAとmainTable.colC = minimumTable.minColC group by mainTable.colA、mainTable.ColC –

0

ここに行ってください!

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

select * from r1 where fix = 1 
+0

を試してみてください、あなたはMS Accessのは、 ')(' RANKをsuportsはよろしいですか? – lad2025

+0

私はMSAccess 2007がこれをサポートしているとは思わない。 – user2184214

+0

人はまだMS Accessを使用していますか?私はこれがMS SQL Serverだと思った。ごめんなさい! – natec