0

オプションの変更を次のようにリストするデータベース テーブルがあります。

日付 | オプション | 価値

01/07/08 | オプションA | 値_a

01/07/08 | オプションB | 値_b

02/07/08 | オプションA | 値_a2

オプションを持つ最初の日付 (主キーは日付とオプション) の前には、オプション セットはないと想定しています。毎日、各オプションは以前の変更を上書きしますが、逆方向には上書きしないようにする必要があります。

毎週、オプションごとの最新の値の完全なセットを取得できるように、このテーブルに参加する方法を知りたいです。次のようなもの:

日付 | オプション | 価値

01/07/08 | オプションA | 値_a

01/07/08 | オプションB | 値_b

02/07/08 | オプションA | 値_a2

02/07/08 | オプションB | 値_b

4

3 に答える 3

0

セカンダリ チャネルで必要なソリューションを見つけたので、以下に示します。

SELECT
     *
FROM
     days days
     INNER JOIN
     table data
          ON data.date <= days.date 
     LEFT OUTER JOIN
     table data2
          ON data2.date  <= weeks.date 
               AND data2.option = data.option
               AND data2.date  > data.date

WHERE
          data2.date IS NULL

table days は、情報が必要なすべての日を含むものです。つまり、日のリストです。

これは、最初の結合で情報を取得する必要がある毎日 (テーブルの日数) について、前日をすべて考慮に入れます。2 番目の結合は、より新しい情報を持つ責任ある日を検索します。最新の情報がない場合は、行を使用してその行を考慮しますWHERE data2.date IS NULL

于 2013-08-26T10:38:25.847 に答える