T-SQL从一个表中为多个组选择一行

时间:2016-12-02 14:02:36

标签: sql-server tsql

我有下表:
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-19 | Pear | Strawberry
748596 | 2016-10-30 | Orange | Avocado

我想为每个号码选择第一条记录(具有最小日期的记录) 我怎么能有这样的结果?
NUMBER | DATE | VALUE_A | VALUE_B
145789 | 2016-10-01 | A | Carrot
748596 | 2016-10-07 | Mango | Watermelon

1 个答案:

答案 0 :(得分:4)

很简单。您需要使用row_number(),如下所示。下面我们根据日期为每个Number组行生成唯一的数字(使用Row_number)。最重要的是,我们只选择了最小日期记录(通过使用where子句)。有关row_number click 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