这是一个相对复杂的处理,^_^,思路如下:
1将PAS00000000055956的前3位PAS截取下来
2将PAS00000000055956中的后14位数字截取下来,并转换成数字,然后与9000000相加
3将加的结果转换为字符串,并与'0000000000000'进行拼接,
4对拼接的字符串进行取得最右边的14位,这样保留了原来的PAS00000000055956的后面的14位长度不变
5对取得的结果与第1步截取下来前3位PAS进行拼接,这样得到了最后的结果,
具体的SQL语句如下:
substring(PAS00000000055956,1,3)+right('0000000000000'+cast((cast(substring(PAS00000000055956,4,14) as int) +9000000) as varchar(14)),14)
呵呵,希望能有帮助,^_^
用ADORECORDSET来解决
Private Sub xx()
Dim strSQL, strSQLV As String
Dim cnn As ADODBConnection
Dim rst(1) As ADODBRecordset
Set cnn = New ADODBConnection
Set rst(1) = New ADODBRecordset
Set cnn = CurrentProjectConnection
rst(1)ActiveConnection = cnn
rst(1)CursorType = adOpenStatic
rst(1)LockType = adLockOptimistic
strSQL = "SELECT from tblX"
rst(1)Open strSQL
rst(1)MoveFirst
Dim A1, A2 As Integer
Do while not rst(1)eof
'计算 1、SUM(AA)+SUM(BB)的值
A1 = rst(1)("AA")+rst(1)("BB")
'计算 2、SUM(AA)+SUM(BB)+SUM(CC)-SUM(DD)的值
A2 = rst(1)("AA")+rst(1)("BB")+rst(1)("CC")-rst(1)("DD")
'其他类推
rst(1)Movenext
loop
rst(1)Close
cnnClose
Set rst(1) = Nothing
Set cnn = Nothing
End Sub
不知道你那个查询, 能不能加一个 Row_Number 的处理。
或者有什么 递增的数值在里面的。
如果有的话, 可以参考下面这种处理方式:
测试数据CREATE TABLE temp (
year INT,
salary INT
);
INSERT INTO temp VALUES(2000, 1000);
INSERT INTO temp VALUES(2001, 2000);
INSERT INTO temp VALUES(2002, 3000);
INSERT INTO temp VALUES(2003, 4000);
预期要求结果:
year salary
2000 1000
2001 3000
2002 6000
2003 10000
SELECT
year,
(SELECT SUM(salary) FROM temp t2 WHERE t2year <= tempyear) AS salary
FROM
temp;
year salary
2000 1000
2001 3000
2002 6000
2003 10000
更新不了,总有报错什么的吧?那你把错误贴出来大家看看啊。
还有,你只是说sql语句,什么数据库系统?从语句来看,没有错误。除非你的当前库没有login表、或者,login表的字段不是你列出来的这个样子。
很简单啊,就是select sum(A+B+C) from 表名,这样就行了
如果都是varchar没关系的 它在sum的时候已经就转换了 如果你不放心 那可以麻烦点
select sum(A) + sum(B) + sum(C) from 表名 这样是varchar也不会报错了!
以上就是关于SQL数据库字段加减一个定量的实现语句。全部的内容,包括:SQL数据库字段加减一个定量的实现语句。、ACCESS SQL 语句算术运算问题、DB2数据库查询语句中递归相加等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)