此問題的上下文是存儲小部件的倉庫的計費系統。存儲費用基於widget的大小(例如$ x * height * length * width)。這部分很簡單。我使用以下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%)。在我的Widget表中,我有一個DateReceived和DateShipped的列。 DateReceived始終具有日期時間值。 DateShipped有時爲空(例如,如果小部件仍在存儲中)。我有可用於CycleStart和CycleEnd的參數,這些參數代表相關開票月份的開始和結束。我試圖修改我的SQL查詢,以在選擇表達式中包含等於(存儲天數/月的#天數)的分攤比例。換句話說,AmtDue變成(高度*長度*寬度* 5 *比例因子)我該怎麼做?
下面是幫助說明如何計算比例因子的示例。
如果@CycleStart = 11年7月1日和@CycleEnd = 11年7月31日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%
我真的有這種條件的性質和事實掙扎,我們正在處理日期時間值。
我們能總是假設每月30天? – gbn
我們可以,如果它大大簡化了事情。否則,我寧願準確地使用相關月份的實際天數。 – hughesdan