商品の購読のステータス更新を含むテーブルがあります。サブスクリプションが開始されるとレコードがテーブルに挿入され、そのレコードはサブスクリプションが終了すると終了日に更新されます。私たちのシステムの1つは、サブスクリプションを終了させてからもう一度(新しいレコードを作成する)「同日ドロップ\ add」することがあります。したがって、実際には何も変わっていないのに、同じサブスクライバIDが複数のレコードに添付されています。実際の開始日と終了日を保持しながら同じ日のドロップを除外追加
例のデータは、このようになります:
recID subID start end prodtype
1 19 01/11/2001 01/15/2001 A
2 19 01/15/2001 01/16/2001 A
3 19 01/16/2001 01/20/2001 A
4 19 01/30/2001 01/31/2001 A
この男は1月11日に始まり、1月20日に終了しました。レコード2とレコード3はシステムによって入れられました(同じ日のドロップ加算ですが、実際はそうではありませんでした)。レコード4は、後で開始した19歳の別のサブスクリプションです。
個別のサブスクリプションの最初の(実際の)レコードのみを解決しようとするコードがありますが、サブスクライバがmax()およびグループ化を使用しないと実際の終了日を見つけることができません。もちろん、2つのサブスクリプション(1/11 - 1/31と1/30 - 1/31)が間違っています。
私はこのような二つのレコードにこのパターンを下に解決しようとする私の髪を引き裂くよ:
subID start end prodtype
19 01/11/2001 01/20/2001 A
19 01/30/2001 01/31/2001 A
これは、Teradataのであるが、そのわずかANSI SQLは、私は信じています。
予想結果ならびに正常以下の識別された1つを生成するウィンドウ集合関数を使用して、溶液があります。私に時間があれば、私もそれを書くようにします。 –