我有桌子
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一起使用。
答案 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