计算新列中的值

时间:2017-02-01 12:28:00

标签: sql-server

我有一个输入数据,如

---------------------------------------
M/Y | Total | Con | Est | Keep |  
----------------------------------
May-16 | 1000  | 100    | 200  | 500   |  
Jun-16 | 5000  | 500   | 1000 | 2000  |  
Jul-16 | 10000 | 1000  | 2500 | 5000  |  

----------------

我需要输出像,

--------------------
M/Y | Total | Con | Con(%) | Est | Est(%) | Keep | Keep(%) |    
----------------------------------
May-16 | 1000  | 100 | 10%   | 200 | 20%  | 500 | 50%  |  
Jun-16 | 5000  | 500 | 10%   | 1000 | 20% | 2000 | 40%  |  
Jul-16 | 10000 | 1000 | 10% | 2500 | 25% | 5000 | 50%  |  


---------------------------

注意:此处Con(%),Est(%),Keep(%)是根据Total值计算的。 EX:Con(%) = (Con/Total)*100

任何人都可以帮助我。

提前致谢。

1 个答案:

答案 0 :(得分:1)

假设total永远不是0:

select
    t.*
    , cast(100 * con / total as varchar) + '%' [con(%)],
    , cast(100 * est / total as varchar) + '%' [est(%)],
    , cast(100 * keep / total as varchar) + '%' [keep(%)]
from your_table t;

如果total可以是0,则一个明智的输出是NULL,在这种情况下可以通过将total替换为NULLIF(total,0)来实现。

相关问题