2016-05-16 121 views
1

我有一个基于另外两列计算的百分比列。但是,根据另一列中的值,我将能够更改该计算。SQL - 根据另一列中的值更改计算结果

例如

server outage starttime   endtime   outage_seconds percentage 
a  0  01/11/2015 09:14 01/11/2015 09:08 360   99.58334 
b  0  01/11/2015 03:57 01/11/2015 03:34 1393   98.38774 
c  1  01/11/2015 03:47 01/11/2015 03:29 1050   98.78473 
d  0  01/11/2015 03:47 01/11/2015 03:29 1086   98.74306 
e  1  01/11/2015 03:47 01/11/2015 03:29 1056   98.77778 

凡在中断列中的数据表示,0我想百分比列说100%

我的代码是

SELECT [server] 
    ,[outage] 
    ,[starttime] 
    ,[endtime] 
    ,[outage_seconds] = datediff(second, 0, cast((endime - starttime)as time)) 
    ,[percentage] = 100-(datediff(second, 0, cast((endtime - starttime)as float))/86400.0)*100 
FROM [availability_outages].[dbo].[pnet02_view] 

回答

1
SELECT [server] 
    ,[outage] 
    ,[starttime] 
    ,[endtime] 
    ,[outage_seconds] = datediff(second, 0, cast((endime - starttime)as time)) 
    ,case when [outage] = 0 
     then 100 
     else 100-(datediff(second, 0, cast((endtime - starttime)as float))/86400.0)*100 
    end as percentage 
FROM [availability_outages].[dbo].[pnet02_view]