你可以先查寻在判断然后附值; var sertime,sercount,daytotal:integer; trySQLStatement:=' (select count(servicetimes)as sertime,sum(servicecount)as sercount,sum(TOTALFEE)as total from '+MyTableName; trySQLStatement:=trySQLStatement+' where trim('+MyTableName+'.calledid) = trim(dayrep.calledid)'; trySQLStatement:=trySQLStatement+' and servicestarttime > :DateTime1'; trySQLStatement:=trySQLStatement+' and servicestarttime < :DateTime2'; trySQLStatement:=trySQLStatement+' group by CALLEDID)'; query1.close; query1.sql.clear; query1.sql.add(SQLStatement); query1.open; if not query1.eof then begin sertime:=query1.fieldbyname('sertime').asfloat; sercount:=query1.fieldbyname('sercount').asfloat; daytotal:=query1.fieldbyname('total').asfloat; end; SQLStatement:='update dayrep set(dayservicetimes,dayservicecount,daytotal fee) = ';