2016-05-25 17 views
-1

のための唯一の最大値のレコードを選択し、私は1つのテーブルを持っている複数の行

Unit Rate DateEffected 
------------------------------------------- 
ALHA ILS  2014-03-02 00:00:00.000 
ALHA ILS  2014-08-02 00:00:00.000 
BUCK ILS  2013-02-14 00:00:00.000 
BUCK ILS  2014-03-02 00:00:00.000 
BUCK ILS  2014-08-02 00:00:00.000 
CASC ILD  2013-02-14 00:00:00.000 
CASC ILD  2014-03-02 00:00:00.000 
CASC ILD  2014-08-02 00:00:00.000 

、同様持つレコードは今、私は結果テーブルにのみ最大日付値のレコード選択をたい。これは、

Unit Rate DateEffected 
------------------------------------------- 
ALHA ILS  2014-08-02 00:00:00.000 
BUCK ILS  2014-08-02 00:00:00.000 
CASC ILD  2014-08-02 00:00:00.000 
+0

。テーブル名とカラム名も表示してください – jelliaes

+0

MAXとGROUP BY演算子を見てみましょう。 –

答えて

2

希望します。

SELECT 
Unit, 
Rate, 
MAX(DateEffected) AS MaxDateEffected 
FROM TableName 
GROUP BY Unit,Rate 
+0

これをjoinクエリで使用したいのですか? – damini

+0

ここに参加する必要はないと思います。 – Sandesh

+0

私は他のテーブルでそれを使いたいです。 – damini

2

あなたはこのためにROW_NUMBERを使用することができます。私たちが理解することが容易になりますので、あなたのデータをフォーマットしてください

SELECT Unit, Rate, DateEffected 
FROM (
    SELECT Unit, Rate, DateEffected, 
     ROW_NUMBER() OVER (PARTITION BY Unit 
          ORDER BY DateEffected DESC) AS rn 
FROM mytable) AS t 
WHERE t.rn = 1 
+0

なぜ単純なグループではないのですか? – sagi

+0

これは正しいです(他の答えと同じです)。ただし、最大日付のレコードが2つある場合は、1つのレコードのみが返されることに注意してください。これが必要でない場合は、 'DENSE_RANK()'または 'RANK()'を使うべきです。 – HoneyBadger

関連する問題