私は現在、たとえば次のようなクエリを持っています:
customer_id | start_date | end_date
1 | 20120101 | 20120401
2 | 20120402 | 20121231
1 | 20130101 | 20130401
1 | 20130101 | 20130330
2 | 20130331 | 99991231
2 | 20130402 | 99991231
考慮すべき点が 2 つあります。
- 顧客は戻ってくる可能性があるため、これに対して通常の最大/最小アプローチを実行しても機能しません。
- これは実際には複数のサービスの概要であり、そのうちの 1 つが異なる日付で開始または終了する場合があります。(非常にまれですが、このシナリオに対処する必要があります。)
以上を踏まえて、1行目、2行目、3行目、5行目を返すクエリが欲しいです。
これに対する私の考えとアプローチは次のとおりです。
- start_dates が等しい場合は、最大の終了日を表示します。(customer_id & start_date, max(end_date) でグループ化)
- end_dates が等しい場合は、最小開始日を表示します。(customer_id & end_date, min(start_date) でグループ化)
上記のいずれかを実行するクエリを作成できますが、両方を同時に実行する方法がわかりません。または、別のアプローチがまったく優れている場合。
SQL Server 2008
ありがとうございました!