我有一个具有以下结构的简单示例表:
PK_ID | PK_VALID_FROM_DATE | VALUE
------+--------------------+------
1 | "1980-01-01" | 42
1 | "1999-06-06" | 103
2 | "2011-12-12" | 92
1 | "2014-04-04" | 512
该表是通过在值的每个日期添加一行来创建的。
还是有更好的方法来创建值更改后的日期历史记录并进行查找?
现在,我要查询以找出哪个VALUE
日期在特定日期对特定日期有效PK_ID
。
用法示例:
这是VALUE
做什么PK_ID=1
用的2010-05-22
?
人们很容易看到,从1999-06-06
到2014-04-03
的VALUE=103
对PK_ID=1
,但是如何查询2010-05-22
?
如果我理解正确的话。首先在需要的日期之前找到最大日期。然后在那个日期取值
drop table if exists t1;
create table t1 (PK_ID int, PK_VALID_FROM_DATE date, VALUE int);
insert into t1 values
(1,"1980-01-01", 42),
(1, "1999-06-06", 103),
(2, "2011-12-12", 92),
(1, "2014-04-04", 512);
select value
from t1
where PK_ID=1
and PK_VALID_FROM_DATE =
(select max(PK_VALID_FROM_DATE)
from t1
where PK_ID=1
and PK_VALID_FROM_DATE<= DATE("1999-06-06"))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句