100 lines
2.9 KiB
Transact-SQL
100 lines
2.9 KiB
Transact-SQL
CREATE PROCEDURE YSQKGKSBU_GZTH
|
|
@FSDate NVARCHAR(100),
|
|
@FEDate NVARCHAR(100)
|
|
AS
|
|
BEGIN
|
|
DECLARE @SumDQJE DECIMAL(23,10)
|
|
|
|
--定义变量
|
|
DECLARE @FEDateDate DATE;
|
|
|
|
--判断@FEDate日期是否为空
|
|
IF @FEDate IS NULL OR @FEDate = ''
|
|
BEGIN
|
|
SET @FEDateDate = GETDATE();
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
-- 转换为日期类型
|
|
SET @FEDateDate = CONVERT(DATE, @FEDate);
|
|
END
|
|
|
|
-- 获取上一年的 12 月 31 日
|
|
SET @FEDateDate = DATEFROMPARTS(YEAR(@FEDateDate) - 1, 12, 31);
|
|
|
|
--清空表里的数据
|
|
TRUNCATE TABLE YSQKGK_SBU_GZTH
|
|
--查询到期时间为年初前的到期金额
|
|
SELECT [SBU],SUM([到期金额]) AS '到期金额' INTO #NCTEMP1 FROM ZRP_YingShouMingXi_yuyubo
|
|
WHERE [到期时间] <= @FEDateDate
|
|
GROUP BY [SBU]
|
|
|
|
--插入到期时间为年初前的到期金额
|
|
INSERT INTO YSQKGK_SBU_GZTH([SBU],[年初到期应收款额])
|
|
SELECT [SBU],[到期金额] FROM #NCTEMP1 WHERE [到期金额] <> 0
|
|
|
|
--查询到期时间为年初前的到期金额,且收款人=应收款专责小组
|
|
SELECT [SBU],SUM([到期金额]) AS '到期金额' INTO #NCZZTEMP1 FROM ZRP_YingShouMingXi_yuyubo
|
|
WHERE [到期时间] <= @FEDateDate AND [收款人] = '应收款专责小组'
|
|
GROUP BY [SBU]
|
|
|
|
--插入到期时间为年初前的到期金额,且收款人=应收款专责小组
|
|
INSERT INTO YSQKGK_SBU_GZTH([SBU],[其中_年初应收款专责小组])
|
|
SELECT [SBU],[到期金额] FROM #NCZZTEMP1 WHERE [到期金额] <> 0
|
|
|
|
--查询本年度到期时间的到期金额
|
|
SELECT [SBU],SUM([到期金额]) AS '到期金额' INTO #BNTEMP1
|
|
FROM ZRP_YingShouMingXi_yuyubo
|
|
WHERE
|
|
(@FSDate = '' OR [到期时间] >= @FSDate)
|
|
AND(@FEDate= '' OR [到期时间] <= @FEDate)
|
|
GROUP BY [SBU]
|
|
|
|
--插入本年度到期时间的到期金额
|
|
INSERT INTO YSQKGK_SBU_GZTH([SBU],[本年到期应收款额])
|
|
SELECT [SBU],[到期金额] FROM #BNTEMP1 WHERE [到期金额] <> 0
|
|
|
|
--查询本年度到期时间的到期金额,其中收款人=应收款专责小组
|
|
SELECT [SBU],SUM([到期金额]) AS '到期金额' INTO #BNZZTEMP1
|
|
FROM ZRP_YingShouMingXi_yuyubo
|
|
WHERE
|
|
(@FSDate = '' OR [到期时间] >= @FSDate)
|
|
AND(@FEDate= '' OR [到期时间] <= @FEDate)
|
|
AND [收款人] = '应收款专责小组'
|
|
GROUP BY [SBU]
|
|
|
|
INSERT INTO YSQKGK_SBU_GZTH([SBU],[其中_年初应收款专责小组])
|
|
SELECT [SBU],[到期金额] FROM #BNZZTEMP1 WHERE [到期金额] <> 0
|
|
|
|
SELECT *
|
|
INTO #TEMP1
|
|
FROM(
|
|
SELECT [SBU],
|
|
SUM([年初到期应收款额]) AS 年初到期应收款额,
|
|
SUM([其中_年初应收款专责小组]) AS 其中_年初应收款专责小组,
|
|
SUM([本年到期应收款额]) AS 本年到期应收款额,
|
|
SUM([其中_本年应收款专责小组]) AS 其中_本年应收款专责小组
|
|
FROM YSQKGK_SBU_GZTH
|
|
GROUP BY [SBU]
|
|
)AS YS
|
|
|
|
--清空表的数据
|
|
TRUNCATE TABLE YSQKGK_SBU_GZTH
|
|
|
|
--重新插入数据
|
|
INSERT INTO YSQKGK_SBU_GZTH([SBU],[年初到期应收款额],[其中_年初应收款专责小组],
|
|
[本年到期应收款额],[其中_本年应收款专责小组])
|
|
SELECT * FROM #TEMP1
|
|
|
|
--更新占比数据
|
|
SELECT @SumDQJE = SUM([本年到期应收款额]) FROM YSQKGK_SBU_GZTH
|
|
|
|
UPDATE YSQKGK_SBU_GZTH
|
|
SET [占比] = CONVERT(VARCHAR, CAST(([本年到期应收款额] / @SumDQJE) * 100 AS DECIMAL(10, 2))) + '%'
|
|
|
|
--更新变化数据
|
|
UPDATE YSQKGK_SBU_GZTH
|
|
SET [变化] = ISNULL([本年到期应收款额],0) - ISNULL([年初到期应收款额],0)
|
|
|
|
DROP TABLE #NCTEMP1,#NCZZTEMP1,#BNTEMP1,#BNZZTEMP1,#TEMP1
|
|
END; |