--要的是这个么?
select [A列] = (B列+C列+D列+E列)- (F列-1)*50,
       [B列],
       [C列],
       [D列],
       [E列],
       [F列]
from [able]

解决方案 »

  1.   

    不是这样的。
    我是想update [table] set A = [(B列+C列+D列+E列)- (F列-1)*50]
    但是不知道具体应该怎么写
      

  2.   

    你是想更改还是查询,查询用楼上的就行
    update tbl
    set a = (B列+C列+D列+E列)- (F列-1)*50
    from tbl
      

  3.   

    update [TBL] set A=(B+C+D+E)- (F-1)*50 from TBL
    运行错误
    服务器: 消息 8115,级别 16,状态 2,行 1
    将 expression 转换为数据类型 smallint 时发生算术溢出错误。
    语句已终止。好象B+C+D+E不可以这样打吧??
    我是想修改。不是查询
      

  4.   

    数据类型A是int B,C,D,E,F都是smallint
      

  5.   

    update tbl
    set a = (B列+C列+D列+E列)- (F列-1)*50
      

  6.   

    如果你A列一直都是用来保存这样的结果的话,你可以一建表的时候就实现
    create table test1
    (
    [A列] as (B列+C列+D列+E列)- (F列-1)*50,
    [B列] int ,
    [C列] int,
    [D列] int,
    [E列] int,
    [F列] int
    )--不能为A列插入数据
      

  7.   

    现在的问题是好象(B列+C列+D列+E列) 这样的写法不正确。其他的都没问题。
      

  8.   

    发现新问题。(B列+C列+D列)3列相加没有问题。(B列+C列+D列+E列)这样的话出现
    服务器: 消息 8115,级别 16,状态 2,行 1
    将 expression 转换为数据类型 smallint 时发生算术溢出错误。
    语句已终止。数据类型A是int 
    B,C,D,E,F都是smallint
    这种怎么处理?
      

  9.   

    update tb1
    set A列=
    (convert(int,B列)+convert(int,D列)+convert(int,E列))-(convert(int,F列)-1)*50
      

  10.   

    溢出错误,,有可能(B+C+D+E)加起来超出smallint的范围,,
    你试一下:update [TBL] set A=convert(int,(B+C+D+E))- (F-1)*50 from TBL
      

  11.   

    好了处理好了。结贴了。
    我分2次处理就没问题了
    update [TBL] set A=(A+B+C)
    update [TBL] set A=(A+D+E)
    update [TBL] set A=(F-1)*50
    这样就可以了。希望大家以后遇到这个问题有个了解