0

次の形式のテーブルがあります

id  First service date  Last service date
1   6/19/2006           6/19/2006
1   7/3/2006            7/3/2006
1   7/19/2006           7/19/2006
1   9/10/2007           9/10/2007
1   9/25/2007           9/25/2007
2   4/3/2007            4/3/2007
2   7/9/2007            7/9/2007
2   10/1/2007           5/19/2008
2   1/15/2008           1/15/2008
2   2/13/2008           2/13/2008
2   3/7/2008            3/7/2008
3   5/9/2006            5/9/2006
3   5/15/2006           5/15/2006
3   6/22/2006           6/22/2006
3   10/3/2006           10/3/2006

各 id の最小サービス日と最大サービス日を見つける必要があります。課される条件は、各サービスの間に 90 日以上のギャップがある場合、サービスの最新の最初の日付が最短サービス日になるということです。

だから私が期待している結果は

ID  Minimum date of service     Max date of service
1   9/10/2007                   9/25/2007
2   7/9/2007                    5/19/2008
3   10/3/2006                   10/3/2006
4

1 に答える 1

1

私はこれがあなたが望むものをあなたに与えると思います:

select t1.id, min(t2.firstdate), max(t2.lastdate)
from yourTable t1
inner join yourTable t2
    on t1.id = t2.id
    and datediff(day, t1.firstdate, t2.firstdate) > 90
group by t1.id

SQL FiddlewithDemoを参照してください

于 2012-08-15T15:29:56.537 に答える