より古い最新のvalue
perを見つけようとしていますid
1/1/2013
create table #foo
(
id int,
value money,
entry_date datetime
)
insert into #foo values (1, 1.00, '1/1/2012')
insert into #foo values (1, 2.00, '2/1/2012')
insert into #foo values (1, 7.00, '1/1/2013')
insert into #foo values (2, 1.00, '1/1/2013')
insert into #foo values (2, 1.00, '2/1/2013')
insert into #foo values (3, 5.00, '3/1/2012')
以下に解決策を示しますが、これを間違った方法で行っていることはわかっています。
select id, value
from
(
select id, value, row_number() over (partition by id order by entry_date desc) as ind
from #foo
where entry_date < '1/1/2013'
) a where ind = 1
--Results:
--id value
------------- ---------------------
--1 2.00
--3 5.00
2013 年 1 月 1 日より古いレコードがないため、ID 2 は返されません。
私がやろうとしていることを達成する正しい方法は何ですか?