我对查询和数据库不太满意。 我有以下数据表
Date ID Value
20160601 1 300
20160607 1 301
20160601 2 600
20160607 2 601
20160501 1 250
20160507 1 240
20160501 2 800
20160507 2 801
我的要求是为每个ID选择给定月份的最后日期并显示该值。 例如,如果我选择第5个月,结果将是:
Date ID Value
20160507 1 240
20160507 2 801
等等,根据用户输入的月份。
我知道它可能看起来很简单,但我真的很困难,我会感激一些帮助。感谢。
答案 0 :(得分:2)
假设date
是实际日期列(应该是),您可以使用extract
比较月份值,然后使用row_number() over ...
分析函数来获取最新行每id
值:
select date, id, value
from (select date, id, value,
row_number() over (partition by id order by date desc) as rn
from tbl
where extract(month from date) = 5)
where rn = 1
当然,我假设您的实际日期列被称为其他内容,因为date
是保留字。
答案 1 :(得分:0)
找到最大日期,然后选择具有该日期的所有行。
select *
from table
where date = (select max(date) from table where date like '201605%')