2016-05-27 3 views
-1

は、私はテーブルの "rd_details" を持っている:フィールド値が最大のレコードセットからレコードを選択するにはどうすればよいですか?次のように

GNo  RD  ROI 
11  1000 11.75 
12  2000 11.75 
12  5020 11.75 
12  2100 11.75 
11  3000 11.75 
11  4000 11.75 

私の結果はGNOため

でなければなりません。 11、私は11、4000、11.75
GNoになるはずです。 12、私は12、5020、11.75を取得する必要があります。

これらはRDの最大値を持つレコードです。 GNoを11とキー入力するとRDが4000、ROIが11.75となるはずです

私は次のクエリを持っています。私はVBAでMS Accessを使用しています。

Set rst1 = dbs.OpenRecordset("select * from rd_details where gno=" & Gno) 

は親切にそのままwhere句を維持する上でクエリを変更...

+2

ようこそStackOverflow!投稿を編集して書式を追加して読みやすくすることはできますか?コードにcodeタグを使用します。 –

+0

[HAVING](https://msdn.microsoft.com/en-us/library/bb177906%28v=office.12%29.aspx)句を追加するだけです。 –

+0

@MaciejLosはこの場合Group Byなしで動作しますか?私は彼がランクを適用する必要があると思う。 –

答えて

2

することはできMS Accesのデータベースエンジン内aggregate data。この場合、MAX機能を使用する必要があります。

select GNO, MAX(RD) AS RD, ROI 
from rd_details 
group by GNO, ROI 

もう一つの方法は、(Michael Z.が質問にコメントで述べたように)ネストされたクエリを使用することです。

select a.GNO, a.RD, b.ROI 
from rd_details AS b INNER JOIN 
    (select GNO, MAX(RD) AS RD 
    from rd_details 
    group by GNO) AS a ON b.GNO = a.GNO AND b.RD = a.RD 
+0

私はこの単純なアプローチが好きですが、ROIに異なる値があればうまくいかないと思います。 –

+0

@MichaelZ。、別の解決策を追加しました;)ありがとうございます。 –

+0

特定の 'GNO'と' ROI'値セットに対して最大 'RD'が必要か、' GN'が特定の 'GNO'の最大値であるレコードが必要ですか?上記の解決方法は同じではなく、一方は最初のもの、もう一方は2番目のものです。 – SunKnight0

関連する問題