-2

次のようなデータを想定します。

  ID      EffDate            Rate
   1      12/12/2011         100
   1      01/01/2012         110
   1      02/01/2012         120
   2      01/01/2012          40
   2      02/01/2012          50
   3      01/01/2012          25
   3      03/01/2012          30
   3      05/01/2012          35

2012 年 1 月 15 日の時点での ID 2 のレートはどうすればわかりますか? それとも、2012 年 1 月 15 日の ID 1 のレートですか?

つまり、日付が 2 つのレコードの EffDate の間にある場合に正しいレートを見つけるクエリを実行するにはどうすればよいでしょうか? (レートは、選択した日付より前の日付のものである必要があります)。

ありがとう、ジョン

4

2 に答える 2

2
SELECT TOP 1 Rate FROM the_table
WHERE ID=whatever AND EffDate <='whatever'
ORDER BY EffDate DESC

私があなたを正しく読めば。

(私にはわからないms-sqlの私の考えに合うように編集されました)。

于 2012-09-19T18:42:29.693 に答える
2

これはどう:

SELECT Rate 
  FROM Table1 
 WHERE ID = 1 AND EffDate = (
  SELECT MAX(EffDate) 
    FROM Table1 
   WHERE ID = 1 AND EffDate <= '2012-15-01');

これは、遊ぶためのSQL Fiddleです。ここでは、'ID/EffDate' のペアがすべてのテーブルで一意であると仮定します (少なくともその逆は意味がありません)。

于 2012-09-19T18:53:44.367 に答える