似乎很久以前,我需要创建自己的SQL语句。我有一个带有时间戳(TS)和值(VALUE)的表(GAS_COUNTER)。每天有数百个条目,但是我只需要当天的最新条目。我尝试了不同的方法,但是没有得到我所需要的。
编辑
感谢您的回复速度快,但一些不符合我的需要(我每天需要在表格中的最新值)和一些不工作。我自己最好的陈述是:
select distinct (COUNT),
from
(select
extract (DAY_OF_YEAR from TS) as COUNT,
extract (YEAR from TS) as YEAR,
extract (MONTH from TS) as MONTH,
extract (DAY from TS) as DAY,
VALUE as VALUE
from GAS_COUNTER
order by COUNT)
但值丢失。如果我把它放在第一个选择中,则返回所有行。(由于每一行都是不同的,因此在逻辑上是正确的)下面是表格内容的示例:
TS VALUE
2015-07-25 08:47:12.663 0.0
2015-07-25 22:50:52.155 2.269999999552965
2015-08-10 11:18:07.667 52.81999999284744
2015-08-10 20:29:20.875 53.27999997138977
2015-08-11 10:27:21.49 54.439999997615814
第二编辑和解决方案
select TS, VALUE from GAS_COUNTER
where TS in (
select max(TS) from GAS_COUNTER group by extract(DAY_OF_YEAR from TS)
)
这将给您最后的记录:
select top 1 * from GAS_COUNTER order by TS desc
这是可以为您提供每天最后记录的记录:
select VALUE from GAS_COUNTER
where TS in (
select max(TS) from GAS_COUNTER group by to_date(TS,'yyyy-mm-dd')
)
根据您使用的数据库,您可能需要替换/调整to_date(TS,'yyyy-mm-dd')函数。基本上,它应该从时间戳中提取仅日期部分。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句