如题
BEGIN
DELETE NK_ZLC.dbo.TEMP WHERE MV001 LIKE 'W%'
DECLARE @MV001 VARCHAR(12),@MV002 VARCHAR(30)
DECLARE MV_CURSOR SCROLL CURSOR FOR
SELECT MV001,MV002 FROM WAY2006..CMSMV MV001 WHERE MV001 LIKE'W%'AND MV022=''
OPEN MV_CURSOR
FETCH NEXT FROM MV_CURSOR INTO @MV001,@MV002
WHILE @@FETCH_STATUS=0
BEGIN
  INSERT INTO NK_ZLC.dbo.TEMP SELECT @MV001,@MV002
  FETCH NEXT FROM MV_CURSOR INTO @MV001,@MV002
END
CLOSE MV_CURSOR
DEALLOCATE MV_CURSOR
ENDDELETE NK_ZLC..TEMP_KQ 
INSERT INTO NK_ZLC..TEMP_KQ 
SELECT W.MB001 FROM WAY2006..YAMMB W
RIGHT JOIN  NK_ZLC..TEMP U ON W.MB001=U.MV001
WHERE MB002='200803'DELETE NK_ZLC..TEMP_3
INSERT NK_ZLC..TEMP_3
SELECT M.MV001 FROM NK_ZLC..TEMP M
LEFT JOIN NK_ZLC..TEMP_KQ T ON M.MV001=T.MB001
WHERE MB001 IS NULLSELECT MT001,MV002,ME002 FROM NK_ZLC..TEMP_3
LEFT JOIN WAY2006..CMSMV ON MT001=MV001
LEFT JOIN WAY2006..CMSME ON ME001=MV004
ORDER BY ME002 ASC

解决方案 »

  1.   


    procedure TForm1.Button1Click(Sender: TObject);
    begin
     with adoquery1  do begin
      close;
      sql.Text:='DELETE NK_ZLC.dbo.TEMP WHERE MV001 LIKE ''W%''';
      ExecSQL;  close;
      sql.Text:='SELECT MV001,MV002 FROM WAY2006..CMSMV MV001 WHERE MV001 LIKE ''W%'' AND MV022=''''';
      open;  while not eof do begin
       with adoquery2 do begin
         close;
         sql.Text:='INSERT INTO NK_ZLC.dbo.TEMP(mv001,mv002) VALUES(:la,:lb)';
         Parameters.ParamValues['la']:=adoquery1.FieldValues['MV001'];
         Parameters.ParamValues['lb']:=adoquery1.FieldValues['MV002'];
         ExecSQL;
       end;
      next;
      end;  adoquery2.Close;
      close;
      sql.Text:='DELETE NK_ZLC..TEMP_KQ';
      ExecSQL;  close;
      sql.Text:='INSERT INTO NK_ZLC..TEMP_KQ '+
                'SELECT W.MB001 FROM WAY2006..YAMMB W '+
                'RIGHT JOIN  NK_ZLC..TEMP U ON W.MB001=U.MV001 '+
                'WHERE MB002=''200803''';
      ExecSQL;
      close;
      sql.Text:='DELETE NK_ZLC..TEMP_3';
      ExecSQL;
       close;
      sql.Text:='INSERT NK_ZLC..TEMP_3 '+
                'SELECT M.MV001 FROM NK_ZLC..TEMP M '+
                'LEFT JOIN NK_ZLC..TEMP_KQ T ON M.MV001=T.MB001 '+
                'WHERE MB001 IS NULL';
      ExecSQL;  close;
      sql.Text:='SELECT MT001,MV002,ME002 FROM NK_ZLC..TEMP_3 '+
                'LEFT JOIN WAY2006..CMSMV ON MT001=MV001 '+
                'LEFT JOIN WAY2006..CMSME ON ME001=MV004 '+
                'ORDER BY ME002 ASC ';
      open;
     end;end;
      

  2.   


    {注意这里,自行按实制需本调试,因为不知道你的表的数据结构所以这样写}
    while not eof do begin
       with adoquery2 do begin
         close;
         sql.Text:='INSERT INTO NK_ZLC.dbo.TEMP(mv001,mv002) VALUES(:la,:lb)';
         Parameters.ParamValues['la']:=adoquery1.FieldValues['MV001'];
         Parameters.ParamValues['lb']:=adoquery1.FieldValues['MV002'];
         ExecSQL;
       end;
      next;
      end;
      

  3.   

    这么复杂的SQL,建议LZ用存储过程实现吧