我要对一个表进行批量插入数据,SQL语句如下:
str:='insert into cbjl(yhbh,sbbh,yslx,dj,qsds,zzds,ysl,ssqy,nd,yf)'+
'select sbzl.yhbh,sbzl.sbbh,sbzl.yslx,sbzl.sj ,cbjl.zzds,0,0,sbzl.ssqy,'+
''''+edit1.Text+''' as nd,'''+combobox1.Text+''' as yf from sbzl'+
'left join cbjl on(sbzl.sbbh=cbjl.sbbh) where cbjl.yf='''+inttostr(i)+'''';
i 表示上个月的月份.cbjl.zzds这个是上个月的ZZDS的值.也就是说.在插入下个月的记录时.要将上个月的ZZDS(终止读数)赋给下个月的QSDS(起始读数).现在问题是.如果上个月的ZZDS如果是0的话,则要查询该月的再上一个月的ZZDS直到不为0时,才能将它的ZZDS赋给要插入的这个月的QSDS.那要怎么去判断呢? 每个月都有很多条记录.并且有可能只是其中一条或多条的ZZDS为0~~~!!!
起先我是对月份进行循环判断.再对每个月的每条记录进行判断.可发现很难实现.各位有什么好的办法??啊?~~~~救救我啊~~~~
str:='insert into cbjl(yhbh,sbbh,yslx,dj,qsds,zzds,ysl,ssqy,nd,yf)'+
'select sbzl.yhbh,sbzl.sbbh,sbzl.yslx,sbzl.sj ,cbjl.zzds,0,0,sbzl.ssqy,'+
''''+edit1.Text+''' as nd,'''+combobox1.Text+''' as yf from sbzl'+
'left join cbjl on(sbzl.sbbh=cbjl.sbbh) where cbjl.yf='''+inttostr(i)+'''';
i 表示上个月的月份.cbjl.zzds这个是上个月的ZZDS的值.也就是说.在插入下个月的记录时.要将上个月的ZZDS(终止读数)赋给下个月的QSDS(起始读数).现在问题是.如果上个月的ZZDS如果是0的话,则要查询该月的再上一个月的ZZDS直到不为0时,才能将它的ZZDS赋给要插入的这个月的QSDS.那要怎么去判断呢? 每个月都有很多条记录.并且有可能只是其中一条或多条的ZZDS为0~~~!!!
起先我是对月份进行循环判断.再对每个月的每条记录进行判断.可发现很难实现.各位有什么好的办法??啊?~~~~救救我啊~~~~
解决方案 »
- 请问如何防止注册表值或者键给删除或者修改?
- 导出Excel的问题 CXlsBof: array[0..5] of Word = ($809, 8, 0, $10, 0, 0);
- Win2000下列举进程,十万火急
- 问Tmediaplayer控件
- 在线等:CopyFileTo函数怎样使用?
- 本人是计算机系的,现在想学一种以后会有很好发展的编程语言或者计算机方面的技术,希望大家给点建议!
- 如何把系统的输入法定于自己选择的??高分求急。QQ:2059478 在线。。。
- 斑马打印机端口
- 如何拦截其他软件要更改注册表的消息?
- 小问题,大家答
- 如何修改EXE文件的代码?谢谢回复!!!
- 用For循环动态创建多个线程,为何好像只创建了一个线程
---
我觉得这个可以直接用sql解决
case …… then ……
不知可不可行
如果改变了那个STR中的where 条件的话.所有的记录都会变.但要的只是不符合条件的记录需要变动~~
select case 12月数据 when 0 then
(case case 11月数据 when 0 then ……)
else 12月数据……
没什么吧,写的复杂些,执行起来就快了
--------------------------
swimming8243(swimming)~~~~谢谢你了,改天有空我试下你的方法~~嘿~