2016-12-02 9 views
3

私が次の表があります。
NUMBER | DATE | VALUE_1 | VALUE_2
145789 | 2016-10-01 | A | Carrot
145789 | 2016-10-03 | B | Apple
145789 | 2016-10-14 | C | Banana
748596 | 2016-10-07 | Mango | Watermelon
​​
748596 | 2016-10-30 | Orange | Avocado複数のグループのためのT-SQLを選択一行は

を私は選択したいです各番号の最初のレコード(t彼は最低の日付)。
どうすればこのような結果が得られますか?
NUMBER | DATE | VALUE_A | VALUE_B
145789 | 2016-10-01 | A | Carrot
748596 | 2016-10-07 | Mango | Watermelon

答えて

4

非常にシンプル。以下のように、これにはrow_number()を使用する必要があります。以下では、日付に基づいて各番号グループの行に固有の番号(Row_numberの使用)を生成しています。その上に我々は最小日付レコード(where句を使用して)のみを選択しました。詳細約row_numberclick here.

SELECT [NUMBER], [DATE], [VALUE_1], [VALUE_2] 
    FROM 
    (

    SELECT *,ROW_NUMBER() OVER(PARTITION BY NUMBER ORDER BY DATE ASC) RNO 
    FROM TABLE1)A 
    WHERE RNO=1 
+0

ことが(ウィンドウ/分析関数)であり、それは1行毎に制限するサブセレクト..(またはAでなければならない理由は何ROW_NUMBERの説明を参照するとよいでしょうウィンドウ関数へのリンク) – xQbert

関連する問題