Quantcast
Channel: プログラム の個人的なメモ
Viewing all articles
Browse latest Browse all 860

【SQL】過去直近データを取得するには...

$
0
0

構文

SELECT
  * 
FROM
  テーブル名
WHERE
  カラム名 = (SELECT MAX(カラム名) FROM テーブル名 WHERE カラム名 <= 対象日付)

サンプル

使用するテーブル

 * 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


関連記事

サブクエリ / 副問合せ ~SELECT文中のSELECT文~

http://blogs.yahoo.co.jp/dk521123/35657803.html

最新日付データを取得するには...

http://blogs.yahoo.co.jp/dk521123/34098423.html

Viewing all articles
Browse latest Browse all 860

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>