2011-08-10 11 views
0

ある契約番号とサービスコードが重複していない日付が必要な数百万行のテーブルがあります。典型的には2〜4行あり、重複する日付は1つのレコードに結合する必要があります。重複しないレコードは結合しないでください。ギャップは維持する必要があります。SQL Serverで重複する日付範囲を組み合わせる

ContractNumber  ServiceCode  StartDate  EndDate 
1111111   AFL    2010-01-01  2010-12-31 
1111111   AFL    2011-01-01  2011-12-31 
1111111   AFL    2011-04-01  2012-03-31 
1111111   AFL    2011-04-01  2012-06-30 
1111111   AFL    2013-01-01  2013-12-31 

ものがに結合する必要があります:Eliminate and reduce overlapping date ranges:また

ContractNumber  ServiceCode  StartDate  EndDate 
1111111   AFL    2010-01-01  2010-12-31 (remains the same) 
1111111   AFL    2011-01-01  2012-06-30 (merged) 
1111111   AFL    2013-01-01  2013-12-31 (gap maintained) 

、私はすでにこの質問を見てきました。それはデータのサブセットの下で動作しましたが、私が持っているすべてのデータでそれを解き放つと、それは本当に遅かったです。私は数百万行のために数分で動くものが必要です。何か案は?

答えて

0

このような問題に多くの時間を費やしていたため、大きなテーブルからデータを削除するよりも、データを重複なくクリーンに保つ方が効率的だと思います。制約によって効率的に処理できます。Contiguous Time Periods

+0

あなたの提案は実際に私の問題を解決するものではありません。データを整理するのが最善の選択だと私は明らかに分かっていますが、ビジネス上の要件は私にそれをさせません。 –

+0

@rwponu:私はあなたに幸運を祈っていますが、私の最善の知識には迅速かつ簡単な解決法はありません。そのような場合にAdam MachanicはCLRを推奨していますが、彼はこの問題を解決するために複雑なC#コードをたくさん書く必要があると言いました。 –

関連する問題