我在这里碰到了一堵砖墙,我希望有人能指出我正确的方向。我有一个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(天数),因为扩展名尚未使用。
如何创建新列或仅创建变量以计算和显示剩余天数?
任何帮助都将一如既往地感谢,谢谢。
答案 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;
第一种形式更简单,如果最大扩展名是各个扩展名的总和,则应该有效。