0

Ingres テーブルに次のようなデータがあります。

REF     FROM_DATE   TO_DATE 
A       01.04.1997  01.04.1998
A       01.04.1998  27.05.1998
A       27.05.1998  01.04.1999

B       01.04.1997  01.04.1998
B       01.04.1998  26.07.1998
B       01.04.2012  01.04.2013

min(from_date) から max(to_date) までの期間が連続している参照もありますが、期間にギャップがあるものもあります。

日付期間にギャップがある参照を特定する Ingres SQL の方法を知りたいです。

これは、Ingres sql コマンドを呼び出す Unix シェル スクリプトとして実行しています。

お知らせ下さい。

4

2 に答える 2

1

Ingres の日付関数に詳しくありません。-2つの日付の差を日数で取得すると仮定しましょう。

データに重複がない場合は、必要なことを非常に簡単に行うことができます。ギャップがない場合、最小日付と最大日付の差は、各行の差の合計と同じになります。差が 0 より大きい場合、ギャップがあります。

そう:

select ref,
       ((max(to_date) - min(from_date)) -
        sum(to_date - from_date)
       ) as total_gaps
from t
group by ref;

これはあなたの場合にうまくいくと思います。それ以外の場合は、終了日が期間に含まれているかどうかによって、「1 ずつずれている」問題が発生する可能性があります。

于 2014-01-21T13:41:18.573 に答える