sql server 中的计算字段能不能能不能实现这样的功能,如下(求高人指教,先谢了啊!)

sql server中的计算字段a,是由其他两个字段计算出来的(例如b+c),但是我想根据d的值来判断a是否要计算(例如当d=0时,计算a的值,当d>0时就不计算)。或者说计算字段的公式可不可以使用case,如果能用的话,该怎么写?

1> CREATE TABLE #tmp (
2> b int,
3> c int,
4> d int,
5> a as (CASE WHEN d=0 THEN b+c ELSE 0 END )
6> );
7> GO
1> insert into #tmp(b,c,d) VALUES(1,2,3);
2> insert into #tmp(b,c,d) VALUES(4,5,0);
3> go

(1 行受影响)
1> select * from #tmp;
2> go
b c d a
----------- ----------- ----------- -----------
1 2 3 0
4 5 0 9

(2 行受影响)

这个效果?追问

谢谢高手啊!

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-10-17
完全可以
update 表名 set a=case when d=0 then b+c else a end追问

谢谢你的回答,你的意思是对的,但是不能直接更新此列,数据库会报错。

第2个回答  2011-10-17
select case d when 0 then a else b+c end from table追问

谢谢你的回答,但是我的意思不是要查询,谢谢

sql server 中的计算字段能不能能不能实现这样的功能,如下(求高人指教...
1> CREATE TABLE #tmp (2> b int,3> c int,4> d int,5> a as (CASE WHEN d=0 THEN b+c ELSE 0 END )6> );7> GO 1> insert into #tmp(b,c,d) VALUES(1,2,3);2> insert into #tmp(b,c,d) VALUES(4,5,0);3> go (1 行受影响)1> select ...

在sqlserver2000中创建视图时,能否创建计算字段,怎样创建?
可以创建计算字段。举个例子:比如有表test,包含字段 id ,content 我们创建一个基于test表的视图 test_view,在视图 中添加一个计算字段id2,它是由id+1得来的,那么创建语句就是 create view test_view as select id,content,id+1 as id2 from test ...

SQL server 的字符串函数中有没有能实现,一个表中的C字段是,A字段的字 ...
create table test(a varchar(10),b varchar(10), c as a+b)insert into test(a,b)select 'aa','bb'select c from test 结果:aabb

我想题目是《SQL-Server数据库安全管理措施》很着急啊?快来帮我啊!
我在实现 SQL Server 2000 时用 udf_ (或者类似的标记)标识我编写的函数。工欲善其事, 必先利其器 采用理想的数据库设计工具,比如:SyBase 公司的 PowerDesign,她支持 PB、VB、Delphe 等语言,通过 ODBC 可以连接市面上流行的 30 多个数据库,包括 dBase、FoxPro、VFP、SQL Server 等,今后有机会我将着重介绍 ...

SQL Server 查询 列别名如何使用函数 “select cast((YEAR(GETDATE...
1、f1是varchar类型,varchar类型是不能做计算字段的,这里我给你换成了f3 2、命名规则中,字段名称不能以数字开头,这里我加了个年 具体语句如下 DECLARE @name VARCHAR(200), @sql varchar(200)SELECT @name= cast((YEAR(GETDATE())-2)as varchar(10))+'春'SET @sql ='select sum(F3)...

sql server数据库如何实现当添加一条记录时,最后一个字段自动计算前面的...
可以不用触发器的 使用另一种插入语句就可以实现了,如下:insert into table(name,age)select '小明',(select sum(age) from table)

求助sql server截取字段进行计算
select t1.vipid,SaleSum=sum(t2.saleSum) from t1,t2 where t1.vipid=t2.vipid group by t1.vipid

用Oracle\/SqlServer 的存储过程,实现如下功能:当用户录入完出生日期之后...
我用的是SQL SERVER 分析问题 你的需求要用存储过程的话 方法如下:把你录入的出生日期作为你的存储过程参数,当然你的存储过程还需要一个表示身份的字段 我假设为ID create proc ageA (@id int,@birth datetime)as begin update p_info set year=datediff(year,@Birth,getdate())where id=@id e...

sql server中怎么实现单价数量金额随便输两个数便能自动算出另一个数...
如果我没理解错的话,你说的是和Excel中的自动计算字段一样。可以用SQL Server中的触发器来完成,不过你要系统学一下SQL编程。具体资料,可以自己百度一下“SQL Server 2016高级数据库管理视频教程”

用SQL语句计算列中某些字段出现的频率
必须借助函数方可实现. 一个基本思路是将现有的记录中的value值先单列生成一个数据集(指Value里面逗号分隔开的值, 即AA, BB, CC这种值), 然后根据这个结果集再得到最终结果中的含有AA, BB, AA,CC的结果集; 再最后就是统计得到需要的结果了.请问一下你的数据库是SQL Server还是Oracle?

相似回答