この問題のコンテキストは、ウィジェットを格納するウェアハウスの請求システムです。保存料はウィジェットのサイズに基づいています(例:$ x * height * length * width)。この部分は簡単です。 Amount Dueを計算するために次のSQLを使用し、ユーザーIDごとに集計します。SQLを使用してDateTime値に基づく比例配分
Select UserID, Sum((Height * Length * Width * 5) as AmtDue From Widget
Where StatusID=2
Group By UserID
5は現時点では任意の値です。最終的に私はそれをパラメータとして渡すか、データベースのテーブルから取得します。今は5であると仮定します。
ここは私が苦労している部分です。手数料は月末に計算され、ウィジェットが倉庫に保管された月の日数に応じて比例配分されます(ウィジェットが30日間の月のうち15日間倉庫に入居する場合、手数料は金額の50%)。私のウィジェットテーブルには、DateReceivedとDateShippedの列があります。 DateReceivedには常にdatetime値があります。 DateShippedがnullであることがあります(ウィジェットがまだ格納されている場合など)。 CycleStartとCycleEndに使用可能なパラメータは、関連する請求月の開始日と終了日を表します。私は選択式に(ストレージの日数/月の#)と等しい比率係数を含めるようにSQLクエリを変更しようとしています。言い換えると、AmtDueは(高さ*長さ*幅* 5 *比率)になります。これはどうやって行うのですか?
ここでは、比例係数の計算方法を示す例を示します。
私は本当にこの条件の自然と苦労している私たち事実だ@CycleStart = 7/1/11と@CycleEnd = 7/31/11 MM/DD/YY
DateReceived | DateShipped | Prorate Factor
6/5/11 Null 100%
6/5/11 7/15/11 48.38%
7/30/11 8/5/11 6.45%
7/15/11 7/25/11 35.48%
場合datetime値を扱っています。
たちは30日の月は常に前提とすることはできますか?利回り – gbn
事を大幅に簡略化すれば可能です。そうでなければ、私は正確で、関連する月の実際の日数を使用することを好むでしょう。 – hughesdan