2016-12-02 61 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 | AvocadoT-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

這將是很好看什麼ROW_NUMBER的解釋是(窗口/分析功能),以及爲什麼它必須是一個子選擇,以限制各1列。(或鏈接到窗口功能) – xQbert