ランレングスエンコーディングを使用して圧縮したい、値と日付の巨大なテーブルがいくつかあります。これを行う最も明白な方法 (私にとって) は、すべての個別の値の組み合わせと、最小日付と最大日付を選択することです。これの問題は、マッピングが停止してから再開するインスタンスを見逃すことです。
Id | Value1 | Value2 | Value3 | DataDate
------------------------------------------
01 | 1 | 2 | 3 | 2000-01-01
01 | 1 | 2 | 3 | 2000-01-02
01 | 1 | 2 | 3 | 2000-01-03
01 | 1 | 2 | 3 | 2000-01-04
01 | A | B | C | 2000-01-05
01 | A | B | C | 2000-01-06
01 | 1 | 2 | 3 | 2000-01-07
このようにエンコードされます
Id | Value1 | Value2 | Value3 | FromDate | ToDate
-----------------------------------------------------
01 | 1 | 2 | 3 | 2000-01-01| 2000-01-07
01 | A | B | C | 2000-01-05| 2000-01-06
これは明らかに間違っています。
私が望むのは、一連の値ごとに存在する連続した日付の各セットを返すクエリです。
あるいは、このお尻を後ろ向きに見ている場合は、他のアドバイスをいただければ幸いです。