5
行間で90日が経過したギャップを再帰的に見つける方法
これは私のC#ホームワールドでは一種の些細な作業ですが、SQLでまだ作成しておらず、セットベース(カーソルなし)で解決することを好みます。結果セットは、このようなクエリから取得する必要があります。 SELECT SomeId, MyDate, dbo.udfLastHitRecursive(param1, param2, MyDate) as 'Qualifying' FROM T どのように機能するか これら3つのパラメーターをUDFに送信します。 UDFは内部的にparamsを使用して、ビューから関連する90日未満の古い行をフェッチします。 UDFは 'MyDate'をトラバースし、合計計算に含める必要がある場合は1を返します。 そうでない場合は、0を返します。ここでは「修飾」と名付けられています。 UDFが行うこと 行を日付順にリストします。行間の日数を計算します。結果セットの最初の行はデフォルトでHit = 1になります。差が最大90の場合、-ギャップの合計が90日になるまで次の行に渡します(90日目が経過する必要があります)。代わりに、結果から行を省略することもできます。 |(column by udf, which not work yet) Date Calc_date MaxDiff | Qualifying 2014-01-01 11:00 2014-01-01 0 | 1 2014-01-03 10:00 2014-01-01 2 | 0 2014-01-04 09:30 2014-01-03 1 | …