2017-02-06 10 views
0

SQLでこのような出力を得るにはどうしたらいいですか?私はグループで試しましたが、それは数ヶ月を与えていない、これを行う簡単な方法はありますか?sql - カテゴリで最大値を見つける方法

select * from t1 order by 1,2 ; 
id | month | amnt 
----+-------+------ 
    1 | feb | 50 
    1 | jan | 20 
    2 | apr | 30 
    2 | feb | 50 
    2 | jan | 30 
    2 | mar | 70 
(6 rows) 

Output 
========= 

id | month | amnt 
----+-------+------ 
    1 | feb | 50 
    2 | mar | 70 
+2

? –

+0

試したことがあるSQLを表示 –

+1

どのDBMSを使用していますか? ( 'SQL Server?' 'MySQL''''''''''''''''' ...何か...) – Siyual

答えて

1

あなたはウィンドウ関数を使用している場合

Select Top 1 with ties * 
From YourTable 
Order By Row_Number() over (Partition By id order by amnt desc) 

戻り値を使用しているどのようなDBMS

id month amnt 
2 mar  70 
1 feb  50 
+0

この構文+1 –

+0

@DuduMarkovitz笑顔でありがとう:) –

+0

私は以下のSQLを試してみました。選択してください。* t1から、(select id、max(amnt)mamt t1 group by 1)b a.id = b.id とa.amnt = b.mamt; 'しかし、"ネクタイ "のジェネリックSQLを書く方法の問題は、私はいくつかのウィンドウを探す必要があると思います私がこれを書くつもりのSQLプロダクトに関係なく機能します。 –

関連する問題