我有一个包含资源信息的表格,基础知识是:
ID Total Start End Used
----------------------------------------------
1 350 01-01-2012 31-12-2012 80.6%
2 250 01-01-2012 31-12-2012 51.5%
3 3500 01-01-2012 31-07-2013 12.5%
4 350 01-01-2012 31-10-2012 91.0%
列是:
Total
- 资源总数(货币,时间,纸张等)。Start
- 资源的开始日期End
- 资源的结束日期Used
- 迄今为止使用的资源百分比我必须尝试计算(或估算)资源何时以目前使用的速率运行。
我已经尝试了几种不同的方式使用百分比和百分比,但没有任何意义,我很确定有一个简单的方法来做到这一点,我盯着我的脸,但我找不到它。
我的理想输出将在下面的文本中,但我可能会在应用程序中格式化:
You have used X% of your [resource name] in Y% of the time allotted,
at this rate the resource will run down around [Run Down Date].
任何人都可以解决这个问题的计算方法吗?
修改
为了让问题更加清晰,我将解释如何计算单个日期:
第一行(ID = 1)。
Average % per day = Percentage (80.6) / Days between Start and Today (205)
Average % per day = 0.003931707%
% remaining = Percentage (80.6%)
% remaining = 19.4%
Days remaining = Average % per day (0.003931707%) / % remaining (19.4%)
Days remaining = 49.34243176
Project Run Down = Today + Days Remaining (49.34243176)
Project Run Down = 11/09/2012 (11th Sep)
我已经尝试将此过程转换为SQL但我无法让它工作。
答案 0 :(得分:2)
你可以尝试这样的事情
declare @res table(
id int identity(1,1)
,total int
,start date
,[end] date
,used float )
insert into @res(total, start , [end], used)
values
(350, '20120101', '20121231', 0.806)
,(250, '20120101', '20121231', 0.515)
select
*
,used/DATEDIFF(DAY,start,GETDATE()) as avUsePerDay
,1/(used/DATEDIFF(DAY,start,GETDATE())) as expectedDaysTotal
,DATEADD(day,1/(used/DATEDIFF(DAY,start,GETDATE())),start) as expectedToDie
from @res
答案 1 :(得分:1)
那就是......
SELECT DATEDIFF(d, [StartDate], GETDATE()) * 100.0 / DATEDIFF(d, [StartDate], [EndDate]) AS PercentageTimeGone,
DATEADD(d, (100 - USED) / (Used / DATEDIFF(d, [StartDate], GETDATE())), GETDATE()) AS ProjectedEndingDate
FROM Resources
答案 2 :(得分:0)
关于什么
select id, total, start, end, datediff(day,start,getdate()) / ( total / 100 )
我不善于计算,但在数字方面它正在发挥作用。
一切顺利