求和后提交问题(5分)

  • 主题发起人 主题发起人 gymmy
  • 开始时间 开始时间
G

gymmy

Unregistered / Unconfirmed
GUEST, unregistred user!
各位,我有下面一个table
id cost
1
2 2.3
3 3.4
4 4.5
5 3.9
6 2.9
现在我用select sum(cost) c from table
我的目的是把2.3+3.4+4.5+3.9+2.9之和提交到id=1的cost里去。请问接下来的SQL语句怎么写
可不可以'update table set cost=c'??
 
UPDATE table
SET Cost = (SELECT SUM(Cost) FROM table WHERE ID<>1)
WHERE id = 1
 
谢谢xianguo:
按照楼上的做法我做过了,是可以的。但又遇到问题了,因为我的cost在sql server中是
设为char型的(因为在前台界面上通过edit组件接受用户输入的)不能直接对cost进行SUM运算,我想把cost先转换成money型
再通过SUM进行运算,写法如下: UPDATE table SET Cost=(SELECT SUM(CONVERT(money,cost)) FROM table WHERE ID<>1)WHERE id=1
可是事实证明不行,请问各位到底怎样将cost由char转换为money后再进行SUM运算?这个问题已经折磨了我整整一天了,望大侠们帮忙。
 
有人知道吗?
 
这个问题应该不太难,只是小弟水平太差,望各位大侠相助,不胜感激!![red][/red][:(]
 
你的 cost 如果还是字符型,应再转回去:

UPDATE table SET Cost=convert(char,(SELECT SUM(CONVERT(money,cost)) FROM table WHERE ID<>1)) WHERE id=1
还是前面要截空:
UPDATE table SET Cost=convert(char,(SELECT SUM(CONVERT(money,Ltrim(cost))) FROM table WHERE ID<>1)) WHERE id=1

什么问题讲得清楚一点。
 
to jsxjd:
我的问题是cost字段在sql server中是char型的,所以在程序中我必须把它转换成money
型才能够作计算。按照楼上的做法UPDATE table SET Cost=convert(char,(SELECT SUM(CONVERT(money,cost)) FROM table WHERE ID<>1)) WHERE id=1
我也试过,但总是出错,通不过我开始怀疑能不能SUM(convert(char,cost))这样用,如果cost字段在sql server中是money型的,则
UPDATE table SET Cost=(SELECT SUM(cost) FROM table WHERE ID<>1) WHERE id=1 能通过。请问还有什么办法能把cost由char转换成money的?[:(]
 
到底怎样转换,有人知道么??[:(]
 
看看是不是不能转 Memory ,改成转 float 呢?
另外转的时候,是不是因为有空字符才不行,把空的改成“0”试试。
 
to jsxjd:
现在想想好象在convert(money,cost)时没有trim,大概把空字符也带进去了。明天去看看,
有问题再找你啦。谢谢你了。[:D]
 
后退
顶部