SQL在条件和计算上选择

时间:2017-06-28 11:34:01

标签: sql sql-server

我在这里碰到了一堵砖墙,我希望有人能指出我正确的方向。我有一个SQL数据库,如下所示:

Course              Extension Max   Extension 1 Extension 1 Used    Extension 2 Extension 2 Used
Excel Introduction        24             12           TRUE              12         FALSE
Word Introduction         24             12           TRUE              12         TRUE

因此,根据上述数据,我想要计算的是剩余延长天数,因此对于第一行剩余天数为12天,因为我们有一个12天的区块,另外12天的区块仍然存在。

第二列将显示剩余的零日/ 0日,因为已经使用了12天的区块。

如果两个值都为FALSE,那么它应该只显示一列中的Extension Max(天数),因为扩展名尚未使用。

如何创建新列或仅创建变量以计算和显示剩余天数?

任何帮助都将一如既往地感谢,谢谢。

1 个答案:

答案 0 :(得分:1)

你似乎想要这样的东西:

select t.*,
       ((case when Extension1Used = 'false' then Extension1 else 0 end) +
        (case when Extension2Used = 'false' then Extension2 else 0 end)
       ) as remaining_extension_days
from t;

或者,您可以将其标记为:

select t.*,
       (case when Extension1Used = 'false' and Extension2Used = 'false' 
             then ExtensionMax
             when Extension1Used = 'false'
             then Extension1
             when Extension2Used = 'false'
             then Extension2
             else 0
        end) as remaining_extension_days
from t;

第一种形式更简单,如果最大扩展名是各个扩展名的总和,则应该有效。

相关问题