サンプル
使用するテーブル
* SQL Server2008 R2の場合
テーブル定義
CREATE TABLE item
(
id char(8),
name varchar(100),
price int,
updatedate datetime
);
データ
INSERT INTO item(
id, name, price, updatedate)
VALUES
('I0000001', 'apple', 100, '2014-01-02 12:20:22'),
('I0000001', 'apple', 100, '2014-01-02 13:20:22'),
('I0000001', 'apple', 101, '2014-11-22 12:23:22'),
('I0000001', 'apple', 99, '2014-10-02 12:10:23'),
('I0000001', 'apple', 120, '2014-06-02 12:23:22');
SQL文
DECLARE @target_date datetime;
SET @target_date = '2014-11-01';
SELECT
i.id
,i.name
,i.price
,i.updatedate
FROM
item AS i
WHERE
updatedate =
(SELECT MAX(updatedate) AS latest FROM item WHERE updatedate <= @target_date)
出力結果
id name price updatedate
I0000001 apple 99 2014-10-02 12:10:23.000