Попробуйте это:
SELECT CAST(DATEPART( dd,DateShipped) as decimal)/
CAST(DATEPART(dd,DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))) as decimal) as ProrateFactor
Вы можете умножить на 100, если хотите получить проценты, но я предполагаю, что вы хотите десятичную по соображениям расчета.
Вы можете запустить этот, чтобы увидеть текущий коэффициент пропорциональности:
SELECT CAST(DATEPART( dd,GETDATE()) as decimal)/
CAST(DATEPART(dd,DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))) as decimal)
Чтобы свернуть это с текущими расчетами, вы можете сделать это (предупреждение - это отвратительно):
Select UserID, Sum((Height * Length * Width * 5 *
SELECT CAST(DATEPART( dd,DateShipped) as decimal)/
CAST(DATEPART(dd,DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,GETDATE())+1,0))) as decimal) ) as AmtDue From Widget
Where StatusID=2
Group By UserID