問題を「以前の有効な値」と呼ぶのが適切かどうかはわかりません。事は以下のようなものです:
テーブル「A」があります:
create table A (
name varchar(16),
performanceDate date,
value int
);
name と PerformanceDate の両方が主キーです。
ユーザーごとに毎日データを挿入するプロセスがあります。したがって、データは次のようになります。
select * from A;
|------+-----------------+-------|
| name | performanceDate | value |
|------+-----------------+-------|
| Joe | 2012-05-18 | null |
| Joe | 2012-05-17 | 2 |
| Joe | 2012-05-16 | null |
| Joe | 2012-05-15 | null |
| Joe | 2012-05-14 | 3 |
|------+-----------------+-------|
現在、2012-05-16 と 2012-05-18 の間の preformanceDate で結果セットを取得したいと考えています。現在の日付の値が null の場合、以前の有効な値に置き換える必要があります。たとえば、2012-05-16 の値は null で、2012-05-16 より前の最初の有効な値は3
2012-05-14 です。そのため、結果は次のようになります。
|------+-----------------+-------|
| name | performanceDate | value |
|------+-----------------+-------|
| Joe | 2012-05-18 | 2 |
| Joe | 2012-05-17 | 2 |
| Joe | 2012-05-16 | 3 |
|------+-----------------+-------|
これまでのところ、最初に一時テーブルにデータを挿入し (テーブル "A" は読み取り専用であるため)、値を 1 つずつ更新する予定です。しかし、この方法は非常に遅いです。これについて何か考えはありますか?