- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:分布を正確に取り出すには)
SQL Server2000で日付ごとの担当クラスと掃除箇所を取得する方法
このQ&Aのポイント
- SQL Server2000で日付ごとの担当クラスと掃除箇所を取得するための方法を教えてください。
- 同じ掃除箇所が定期的に回ってくるため、掃除箇所ごとに期間毎にデータを取得したいです。
- お手数ですが、SQL Server2000の環境での実現方法をご教授ください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
方法はいろいろあると思いますが、同じ掃除箇所を2つ以上のクラスが掃除することがないのであれば、 1)同じ掃除箇所について、その日以降最初に別のクラスが掃除した日を求める 2)それより前で最後に掃除した日を求める 3)グルーピングする という考え方がわかりやすいかと思います。 SELECT [クラス],[掃除箇所],MIN([日付]),MAXDATE FROM (SELECT [クラス],[掃除箇所],[日付], (SELECT MAX([日付]) FROM [掃除当番] WHERE [クラス]=t1.[クラス] AND [掃除箇所]=t1.[掃除箇所] AND [日付]<ISNULL( (SELECT MIN([日付]) FROM [掃除当番] WHERE [クラス]<>t1.[クラス] and [掃除箇所]=t1.[掃除箇所] and [日付]>=t1.[日付]),'2099/12/31')) MAXDATE FROM [掃除当番] t1) tmp GROUP BY クラス,掃除箇所,MAXDATE