--UPDATE [oldk3seorder0701] SET 专票金额=0,[普票金额]=0; TRUNCATE TABLE [ZZZ_ZZ_FaPiaoLosed]; DECLARE @FDATE DATETIME,@FSourceBillNo NVARCHAR(200),@FSourceTranType INT,@FSourceInterId INT ,@F_contractnumber NVARCHAR(2000) ,@F_contractnumber2 NVARCHAR(2000),@F_contractnumber3 NVARCHAR(2000),@F_contractnumber4 NVARCHAR(2000),@FOrderInterID INT,@FOrderEntryID INT,@frob INT,@FNumber NVARCHAR(200),@FAuxQty DECIMAL(18,2) ,@amount DECIMAL(18,2),@hexiao DECIMAL(18,2),@FTranType INT,@saleBill NVARCHAR(200),@ifok INT=0,@id INT,@fid1 INT ,@fid2 INT,@row INT=0; -- 1. 声明游标 DECLARE cursor_name2 CURSOR FOR SELECT a.FInterID,a.FEntryID,a.FSourceTranType,a.FSourceInterId,a.FOrderInterID,a.FOrderEntryID,c.FBillNo AS [销售单号], b.FNumber,FAuxQty [数量] -- ,a.FTaxPrice [含税价] --,a.FStdAmount [金额(本位币)] ,a.FStdAmountIncludeTax [价税合计(本位币)] --,a.FStdTaxAmount [税额(本位币)] ,aa.FHeadSelfI0553 ,aa.FHeadSelfI0456 ,c.FHeadSelfS01108,c.FHeadSelfS0171 ,aa.FDate ,frob,aa.FTranType --,aa.FBillNo,a.FInterID,a.FEntryID,a.FSourceBillNo,FHeadSelfS0172 FROM k3.AIS20130323140156.dbo.icsaleentry a LEFT JOIN k3.AIS20130323140156.dbo.icsale aa ON a.FInterID=aa.FInterID LEFT JOIN k3.AIS20130323140156.dbo.t_icitem b ON a.FItemID=b.FItemID LEFT JOIN k3.AIS20130323140156.dbo.SEOrder c ON a.FOrderInterID=c.FInterID --WHERE FTranType NOT IN (80,86) --WHERE c.FBillNo='S110301-ZWH01' ORDER BY a.FInterID,a.FEntryID OPEN cursor_name2; FETCH NEXT FROM cursor_name2 INTO @fid1,@fid2,@FSourceTranType, @FSourceInterId,@FOrderInterID,@FOrderEntryID,@saleBill,@FNumber,@FAuxQty,@amount,@F_contractnumber,@F_contractnumber2,@F_contractnumber3,@F_contractnumber4 ,@FDATE,@frob,@FTranType WHILE @@FETCH_STATUS = 0 BEGIN SELECT @row=@row+1; SELECT @ifok=0,@id=0; IF(@saleBill IS NOT NULL AND @saleBill !='') BEGIN SELECT @ifok=1; SELECT @id=id FROM [oldk3seorder0701] WHERE @saleBill=[单据编码] AND [内码]=@FOrderInterID AND [行号]=@FOrderEntryID; END ELSE IF(@F_contractnumber2 IS NOT NULL AND @F_contractnumber2 !='') BEGIN SELECT @ifok=2; SELECT @id=id FROM [oldk3seorder0701] WHERE @F_contractnumber2=[合同号] AND @FNumber=[物料编码] AND @FAuxQty=[数量]; END PRINT CONCAT('id=',@id,' 第几行: ',@row,' FInterID: ',@fid1,' FEntryID: ',@fid2,' [价税合计(本位币)] ',@amount); IF(@id=0) BEGIN INSERT INTO [dbo].[ZZZ_ZZ_FaPiaoLosed] ([FInterID] ,[FEntryID]) VALUES (@fid1 ,@fid2) END -- @FTranType 80 专票 86 普票 602 专票 601 普票 IF(@FTranType IN (80,602) AND @id>0) BEGIN UPDATE [oldk3seorder0701] SET [专票金额]=ISNULL([专票金额],0)+@amount WHERE id=@id end IF(@FTranType IN (86,601) AND @id>0) BEGIN UPDATE [oldk3seorder0701] SET [普票金额]=ISNULL([普票金额],0)+@amount WHERE id=@id end -- 获取下一条记录 FETCH NEXT FROM cursor_name2 INTO @fid1,@fid2,@FSourceTranType, @FSourceInterId,@FOrderInterID,@FOrderEntryID,@saleBill,@FNumber,@FAuxQty,@amount,@F_contractnumber,@F_contractnumber2,@F_contractnumber3,@F_contractnumber4 ,@FDATE,@frob,@FTranType; END -- 4. 关闭游标 CLOSE cursor_name2; -- 5. 释放游标资源 DEALLOCATE cursor_name2;