关于SQL Server的条件判断

来源:百度知道 编辑:UC知道 时间:2024/06/03 22:02:26
比如我现在有一个列C,他存储的是一个天数,我现在有一个列D存储过去罚款,我需要列D的数据为(C-30)*0.8,如果C小于30则为0,请问怎么实现?谢谢

select *,(case when c>=30 then (C-30)*0.8 else 0 end) as E into table_name_bak from table_name

上面的语句table_name为你的表名,功能是能够新建个table_name_bak 的表 这个表新曾了列E ,列E 的数据为 (C-30)*0.8 ,如果C小于30则为0
----------------
一般不建议更改基本表,但可以建个视图,例如:
create view view_表名
as select C ,(case when c>=30 then (C-30)*0.8 else 0 end) as D from 表名
将表名改成你的基础表名,就是可以使用了!

在你的表中,添加一列D,并在列属性中的:计算所得的列规范——公式中写上:CASE WHEN(C >= 30) THEN (C - 30) * 0.8 ELSE 0 END 就可以了。

或者运行如下语句:
ALTER TABLE table
ADD D AS CASE WHEN(C >= 30) THEN (C - 30) * 0.8 ELSE 0 END

这说明你的想法有问题~想想有没有其他方法吧

回答者: Sharon_QQ - 高级经理 六级 12-23 15:15

正解!

ALTER TABLE tbl
ADD D AS CASE WHEN(C >= 30) THEN (C - 30) * 0.8 ELSE 0 END