71 lines
2.3 KiB
Transact-SQL
71 lines
2.3 KiB
Transact-SQL
ALTER PROCEDURE YSQKGKSBU_GZTH
|
||
@FSDate NVARCHAR(100),
|
||
@FEDate NVARCHAR(100)
|
||
AS
|
||
BEGIN
|
||
-- 声明变量
|
||
DECLARE @StartDate DATE;
|
||
DECLARE @EndDate DATE;
|
||
DECLARE @LastDate Date;
|
||
|
||
-- 将输入的字符串日期转换为日期类型
|
||
SET @StartDate = CONVERT(DATE, @FSDate, 120); -- 假设输入的日期格式为 YYYY-MM-DD
|
||
SET @EndDate = CONVERT(DATE, @FEDate, 120); -- 假设输入的日期格式为 YYYY-MM-DD
|
||
|
||
-- 计算上一年的 12 月 31 日
|
||
SET @LastDate = DATEADD(YEAR, DATEDIFF(YEAR, 0, @StartDate) - 1, 0); -- 获取 @StartDate 的年份的 1 月 1 日
|
||
SET @LastDate = DATEADD(DAY, -1, DATEADD(YEAR, 1, @StartDate)); -- 获取上一年的 12 月 31 日
|
||
|
||
TRUNCATE TABLE YSQKGK_SBU_GZTH
|
||
--获取期初的数据,并填充
|
||
INSERT INTO YSQKGK_SBU_GZTH([SBU],[年初到期应收款额],[其中_年初应收款专责小组])
|
||
SELECT
|
||
SBU,
|
||
到期金额,
|
||
CASE WHEN
|
||
收款人 = '应收款专责小组' THEN 到期金额
|
||
ELSE null END AS '其中_年初应收款专责小组'
|
||
FROM ZRP_YingShouMingXi_yuyubo
|
||
where 订单日期 <= @LastDate
|
||
AND [到期金额] <> 0
|
||
|
||
--获取开始日期和结束日期的数据
|
||
INSERT INTO YSQKGK_SBU_GZTH([SBU],[本年到期应收款额],[其中_本年应收款专责小组])
|
||
SELECT
|
||
SBU,
|
||
到期金额,
|
||
CASE WHEN
|
||
收款人 = '应收款专责小组' THEN 到期金额
|
||
ELSE null END AS '其中_年初应收款专责小组'
|
||
FROM ZRP_YingShouMingXi_yuyubo
|
||
where [订单日期] >= @FSDate
|
||
AND [订单日期] <= @FEDate
|
||
AND [到期金额] <> 0
|
||
|
||
--进行分组合计,并重新将数据填充到YSQKGK_SBU_GZTH中
|
||
SELECT
|
||
SBU,
|
||
SUM(年初到期应收款额) AS 年初到期应收款额,
|
||
SUM(其中_年初应收款专责小组) AS 其中_年初应收款专责小组,
|
||
SUM(本年到期应收款额) AS 本年到期应收款额,
|
||
SUM(其中_本年应收款专责小组) AS 其中_本年应收款专责小组
|
||
INTO #TEMP1
|
||
FROM YSQKGK_SBU_GZTH
|
||
GROUP BY SBU
|
||
|
||
TRUNCATE TABLE YSQKGK_SBU_GZTH
|
||
|
||
INSERT INTO YSQKGK_SBU_GZTH([SBU],[年初到期应收款额],[其中_年初应收款专责小组],[本年到期应收款额],[其中_本年应收款专责小组])
|
||
SELECT * FROM #TEMP1
|
||
|
||
--记录本年到期应收款额的总和,并更新占比字段
|
||
DECLARE @SUMDQJE DECIMAL(23, 10);
|
||
SELECT @SUMDQJE = SUM([本年到期应收款额]) FROM YSQKGK_SBU_GZTH
|
||
|
||
UPDATE YSQKGK_SBU_GZTH
|
||
SET [占比] = FORMAT(ROUND([本年到期应收款额] / @SUMDQJE * 100, 2), '0.##') + '%';
|
||
|
||
--更新变化字段
|
||
UPDATE YSQKGK_SBU_GZTH
|
||
SET [变化] = ISNULL([本年到期应收款额],0) - ISNULL([年初到期应收款额],0)
|
||
END |