我正在制定索赔案件的年度表格。目标是对于每个现有索赔,每年年底应该有一行来反映该索赔案例的情况。例如索赔A已于2020年开放并于2020年关闭,在数据库中我只会有一行是日期为 31/12/2020 的行。我应该为 2021-2024 年添加 2020 年的重复项,这样每年就有一行。经理将汇总所有索赔案件的所有费用。现在我已经弄清楚如果这个案例最终结束的话如何添加 2021-2024 年的行。
我没有找到解决方案的具体案例是重新审理的案例。以此为例,假设索赔 A 于 2023 年重新提出。因为现在状态为活动状态,所以数据库中存在 2023 年和 2024 年的行。但缺少 2021 年和 2022 年的行。由于我们需要累计总数,所以首先需要解决的是缺少哪一年,然后重复哪一年的情况?在这种情况下,该计划应该在 2021 年和 2022 年重复 2020 年的情况。社区能否给我一个可以进一步工作的方向?提前谢谢您!
PROC SQL ;
CREATE TABLE ClosedClaims_LatestRecordw AS
SELECT *, 1 AS JOIN_KEY
FROM ClosedClaimsw
WHERE DATE = MAXMAXDATE;
quit;
proc sql;
create table year_table (YEAR num , JOIN_KEY num);
/*insert values into table*/
insert into year_table
values( 2020 , 1 )
values( 2021 , 1 )
values( 2022 , 1 )
values( 2023 , 1 )
values( 2024 , 1 );
/*display table*/
select * from year_table;
quit;
Proc sql;
CREATE TABLE ClosedClaims_Joinw AS
SELECT CC.*, YT.YEAR AS YEAR_ADDEDRECORD
FROM ClosedClaims_LatestRecordw CC
INNER JOIN year_table YT ON CC.JOIN_KEY = YT.JOIN_KEY;
quit;
* in this code, keep only the extra lines that is newer than the maxdate of the claim;
proc sql;
CREATE TABLE ClosedClaims_NewRecordsw AS
SELECT * FROM ClosedClaims_Joinw
WHERE YEAR( DATE ) < YEAR_ADDEDRECORD;
quit;
不要使用 SQL 来做在普通 SAS 代码中容易得多的事情。
因此,假设您有一个名为 CLAIM_CASES 的数据集,其中包含变量 OPENED_DATE 和 CLOSED_DATE,那么您可以创建一个数据集,将其扩展为每年有一个观察结果,索赔与这样的简单数据步骤相交叉:
data expand;
set claim_cases;
do year=year(opened_date) to year(closed_date);
output;
end;
run;
要制作 YEAR_TABLE 数据集,只需使用简单的 DO 循环。
data year_table;
do year=2020 to 2024;
output;
end;
run;