create table #每天汇总表
create table #本月流水账
本月期初金额= select * from 结转表 where 前一个月 and 标识='期未'
insert into #本月流水账
本月年 本月 期初 本月期初金额 收0 出 0 余额=本月期初金额
insert into #每天汇总表
select Amount,day from XXX where YEARDAY>= and YEADAY <=日期
order by YEARDAY asc
开始计算余额=本月期初金额
游标遍历
开始计算余额 =开始计算余额+收-出
insert into #本月流水账
明细 收 出 余额=开始计算余额
ALTER procedure[dbo].[YSKHDZD](@CUS_NO VARCHAR(20),@BDate VARCHAR(20),@EDate VARCHAR(20),@ERPNAME VARCHAR(20))
as
declare @SQL1 VARCHAR(5000)
declare @SQL2 VARCHAR(1000)
declare @SQL3 VARCHAR(1000)
declare @SQL4 VARCHAR(1000)
declare @SQL5 VARCHAR(5000)
declare @SQL6 VARCHAR(1000)
declare @SQL7 VARCHAR(1000)
declare @SQL8 VARCHAR(1000)
declare @SQL9 VARCHAR(1000)
IF OBJECT_ID('tempdb..##AA') IS NOT NULL DROP TABLE ##AA
SET @SQL1='SELECT A.CUS_NO, A.DEP, A.USR_NO As SAL_NO, A.CUR_ID,A.Rem,
A.RP_DD As BIL_DD,''RT'' As BIL_ID, A.RP_NO As BIL_NO, A.Exc_Rto,A.IRP_ID,
IsNull(A.Amtn_BC,0) As Amtn_BC, IsNull(A.Amtn_BB,0) As Amtn_BB,
IsNull(A.Amtn_Chk1,0) As Amtn_Chk1, A.CHK1_NO, A.CHK2_NO, A.CHK3_NO,
IsNull(A.Amtn_Chk2,0) As Amtn_CHK2, IsNull(A.Amtn_Chk3,0) As Amtn_Chk3,
IsNull(A.Amtn_Chk4,0) As Amtn_Chk4, A.CHK4_NO, A.CHK5_NO,
IsNull(A.Amtn_Chk5,0) As Amtn_Chk5, IsNull(A.Amtn_Arp,0) As Amtn_Arp,
IsNull(A.Amtn_Irp,0) As Amtn_Irp,
IsNull((Select Sum(E.Amtn) From '+@ERPNAME+'..TF_MON3 E Where E.RP_ID=A.RP_ID And E.RP_NO=A.RP_NO And E.ITM=A.ITM),0) As Amtn_Other,
IsNull(A.Amt_BC,0) As Amt_Bc, IsNull(A.Amt_BB,0) As Amt_BB,
IsNull(A.Amt_Chk1,0) As Amt_Chk1, IsNull(A.Amt_Chk2,0) As Amt_Chk2,
IsNull(A.Amt_Chk3,0) As Amt_Chk3, IsNull(A.Amt_Chk4,0) As Amt_Chk4,
IsNull(A.Amt_Chk5,0) As Amt_Chk5, IsNull(A.Amt_Arp,0) As Amt_Arp,
IsNull(A.Amt_Irp,0) As Amt_Irp,
IsNull((Select Sum(E.Amt)From '+@ERPNAME+'..TF_MON3 E Where E.RP_ID=A.RP_ID And E.RP_NO=A.RP_NO And E.ITM=A.ITM),0) As Amt_Other
INTO ##AA FROM '+@ERPNAME+'..TF_MON A WHERE A.CUS_NO='''+@CUS_NO+''''
EXEC(@SQL1)
IF OBJECT_ID('tempdb..##CC') IS NOT NULL DROP TABLE ##CC --本期来源发生额及单据
SET @SQL2='SELECT A.CUS_NO, A.PAY_REM, A.DEP, A.SAL_NO, A.Amtn, A.Amt, A.CUR_ID,
A.Exc_RTO, A.BIL_ID, A.BIL_NO, A.BIL_DD, A.REM, A.INV_NO INTO ##CC
FROM '+@ERPNAME+'..MF_ARP A WHERE CUS_NO='''+@CUS_NO+''' AND BIL_DD>='''+@BDate+''' AND BIL_DD<='''+@EDate+''''
EXEC(@SQL2)
IF OBJECT_ID('tempdb..##QCYS') IS NOT NULL DROP TABLE ##QCYS --AMTN为期初应收
SET @SQL3='SELECT CUS_NO,SUM(Amtn) AS Amtn,SUM(Amtn_Rcv) AS Amtn_Rcv,
SUM(Amt) AS Amt,SUM(Amt_Rcv) AS Amt_Rcv
INTO ##QCYS FROM '+@ERPNAME+'..MF_ARP WHERE CUS_NO='''+@CUS_NO+''' AND BIL_DD<'''+@BDate+''' GROUP BY CUS_NO'
EXEC(@SQL3)
IF OBJECT_ID('tempdb..##QCYS1') IS NOT NULL DROP TABLE ##QCYS1 --期初已收 +SUM(AMTN_IRP)-冲预收
SET @SQL4='SELECT CUS_NO,(SUM(AMTN_BB)+SUM(AMTN_BC)+SUM(AMTN_CHK1)+SUM(AMTN_CHK2)+SUM(AMTN_CHK3)+SUM(AMTN_CHK4)
+SUM(AMTN_CHK5)+SUM(AMTN_Other)+SUM(AMTN_ARP)) AMTN_RCV INTO ##QCYS1 FROM ##AA
WHERE BIL_DD<'''+@BDate+''' GROUP BY CUS_NO'
EXEC(@SQL4)
IF OBJECT_ID('tempdb..##QCJE') IS NOT NULL DROP TABLE ##QCJE --期初金额
SET @SQL5='SELECT BIL_DD='''',BIL_NO=''期初'',A.CUS_NO,ISNULL(A.AMTN,0) AMTN,ISNULL(B.AMTN_RCV,0) AMTN_RCV,
ISNULL(A.AMTN-B.AMTN_RCV,0) YJ,INV_NO='''' INTO ##QCJE FROM ##QCYS A LEFT JOIN ##QCYS1 B ON A.CUS_NO=B.CUS_NO'
EXEC(@SQL5)
IF OBJECT_ID('tempdb..##BQFS') IS NOT NULL DROP TABLE ##BQFS --本期来源发生额及单据
SET @SQL6='SELECT CONVERT(varchar(100),BIL_DD, 23) AS BIL_DD,BIL_NO,CUS_NO,ISNULL(AMTN,0) AMTN,
AMTN_RCV=0,YJ=0,INV_NO INTO ##BQFS FROM ##CC'
EXEC(@SQL6)
IF OBJECT_ID('tempdb..##BQYS') IS NOT NULL DROP TABLE ##BQYS --本期发生已收额
SET @SQL7='SELECT CONVERT(varchar(100),RP_DD, 23) AS BIL_DD,RP_NO AS BIL_NO,CUS_NO,AMTN=0,ISNULL(SUM(AMTN_CLS),0) AS AMTN_RCV,YJ=0,INV_NO='''' INTO ##BQYS
FROM '+@ERPNAME+'..TC_MON WHERE CUS_NO='''+@CUS_NO+''' AND RP_DD>='''+@BDate+''' AND RP_DD<='''+@EDate+''' GROUP BY CUS_NO,RP_DD,RP_NO'
EXEC(@SQL7)
IF OBJECT_ID('tempdb..##KHDZD') IS NOT NULL DROP TABLE ##KHDZD --本期发生已收额
SET @SQL8='SELECT * INTO ##KHDZD FROM (SELECT * FROM ##QCJE UNION ALL SELECT * FROM ##BQFS UNION ALL SELECT * FROM ##BQYS) T ORDER BY T.BIL_DD'
EXEC(@SQL8)
SET @SQL9='WITH M AS (SELECT ROW_NUMBER() OVER(ORDER BY (SELECT 1)) RN,* FROM ##KHDZD)
SELECT T.BIL_DD,T.BIL_NO,T.CUS_NO,T.AMTN,T.AMTN_RCV,
(SELECT SUM(AMTN-AMTN_RCV) FROM M WHERE RN<=T.RN) YJ,T.INV_NO FROM M T'
EXEC(@SQL9)