获得第一个价值

时间:2013-12-05 13:53:34

标签: sql

我有桌子

ID     VALUE     DATE
1      2         1.1.2013 
1      3         1.9.2013
1      3         1.4.2013
2      1         1.1.2013 
2      1         1.2.2013
3      3         1.3.2013
3      1         1.4.2013
3      3         1.5.2013

我只需要获取id的第一个值,每个id只需要一行。

我尝试这个选择:

SELECT ID,
       first_value(VALUE) over(PARTITION BY id ORDER BY DATE) f_value,
       first_value(DATE) over(PARTITION BY id ORDER BY DATE) f_date
FROM table1
GROUP BY ID

但我不能将GROUP BY与FIRST_VALUE一起使用。

2 个答案:

答案 0 :(得分:1)

SELECT DISTINCT ID,
   first_value(VALUE) over(PARTITION BY id ORDER BY DATE) f_value,
   first_value(DATE) over(PARTITION BY id ORDER BY DATE) f_date
FROM table1

您不需要GROUP BY,因为在OVER函数中已经有group by和order by。

答案 1 :(得分:0)

SELECT ID,VALUE,DATE
FROM
--inline view will return the min date for each group based on ID
 (
   SELECT ID,
          value,
          date,
          MIN(DATE) over(PARTITION BY id) f_date
    FROM table1
  )
 WHERE f_date=date; --compare the date and fetch the row with min date