有表1(A,B,C,D)ABCD都是INT
要求每给表1插入一行数据的时候C和D的数是前一行的结果相加
也就是
表1
A B C D
1 1 10 5
1 1 15(C+D) 5
1 1 20(C+D) 5
这样一次类推 反正每插入一行C的数据就是本身的数加上D的数
但是用SQL Insert into语句在VALUES里面不能出现变量 所以就不知道怎么用Insert into了
ADOQuery1.SQL.Text:='Insert into 表1(A,B,C,D) Values('1','1',C+D,'5')';
请问在Values里面的C+D怎么做呢?
要求每给表1插入一行数据的时候C和D的数是前一行的结果相加
也就是
表1
A B C D
1 1 10 5
1 1 15(C+D) 5
1 1 20(C+D) 5
这样一次类推 反正每插入一行C的数据就是本身的数加上D的数
但是用SQL Insert into语句在VALUES里面不能出现变量 所以就不知道怎么用Insert into了
ADOQuery1.SQL.Text:='Insert into 表1(A,B,C,D) Values('1','1',C+D,'5')';
请问在Values里面的C+D怎么做呢?
解决方案 »
- C# 代码 翻译成 delphi
- 如何hook textout?
- (BDS2007)08年02月份帮助系统更新
- 如何判断ADVStringGrid的cells里面的内容是否被修改了?
- $936F949 EOLeException 多重步骤操作发生错误,请检查每一个状态值
- 并发丢失数据问题,请教高手。
- 小弟我自知才疏学浅。。准备到吉林大学再继续学习。。各位给点意见。
- 如何知道query、table中的记录数?
- 请想写浏览器的网友留下地址,大家一起来解决写浏览器的一些问题!
- socket问题?????
- 求大神救 [Error] Unit2.pas(1160): Incompatible types: 'String' and 'Integer'
- 电子病历保存时候怎么实现保存为XML文件
select top 1 '1','1',c+d,'5' from 表1 order by C desc但表1若没有数据的话(另外特别处理吧),会插入不成功
select 1,1,C+D,5 from 表1 where C=(select max(C) from 表1)
insert into 表1(A,B,C,D)
select 1,1,isnull((C+D),10),5 from 表1 where C=(select max(C) from 表1)
在用UPDATE SET中如果写成 update 表1 set C=C+D 这样就没有问题 但是为什么在
insert into 表1(A,B,C,D) values(1,1,C+D,10)这里就不能用呢 说values里面不能出现表达式或者变量
我理解的是,你有一张入库流水帐表,每次记录出入库的操作和库存的变化,在这张流水表中,只有最后一次插入的记录对你新增是有效的,其他都是历史记录。所以,你需要有一个字段用来标记哪条是最后一次新增的记录,你可以使用时间戳或流水号来表示,这样你在新插入一条的时候就先检索出最后记录,取出当前的库存值,然后计算变化后的值,再插入。语句大致如下:
insert into TAB
select 1 as A, 1 as B, (select C from TAB where 最后一次新增的流水号)+10 as C, 10 as D