【发布时间】:2015-07-10 01:52:38
【问题描述】:
我是索赔数据的新手,对 SQL 也比较陌生...非常感谢您的帮助。
我有类似这样的数据:
Customer Group Member ServiceDt
ABCDE 123 1111 01-Jan-12
123 1111 01-Feb-12
123 1111 01-Mar-12
123 1112 01-Feb-12
123 1112 01-Mar-12
FGHIJ 456 1116 01-Feb-12
KLMNO 567 1117 01-Mar-12
678 1118 01-Feb-12
789 1119 01-Mar-12
会员每月可以有一个条目来指示有效注册日期。因此,一个会员可以有 24 行,用于两年的注册。另一个可能只有五行,依此类推……每个成员都是一个组的一部分,而组又是一个客户的一部分。 (一个客户可以有多个组 - 每个组中有许多成员,每个成员每月有一行)。
我需要评估从服务日期前 12 个月到前 12 个月(服务日期前后一年的注册)的连续注册,然后按 CUSTOMER 和 GROUP 编号将其汇总到组中。
我尝试过 intck/intcx 函数,但似乎做错了什么。当我尝试第一个。最后。方式,我迷路了。这些数据对我来说太新鲜了。:)
这是我目前尝试的代码的 sn-ps(不包括服务器连接的东西):
beg1ylag = intnx('month',&eff ,-12,'m');
add1yfut = intnx('month',&eff , 12,'m');
If first.member_id then do;
mth_cnt = 0;
lag_mth_cnt = 0;
fut_mth_cn = 0;
End;
mth_cnt+1;
if eff_dt < servicedt then lag_mth_cnt+1;
if eff_dt > servicedt then fut_mth_cnt+1;
if last.member_id then output;
Proc SQL;
Select (x,y,z
beg1ylag = intnx('month',servicedt,-12,'m');
add1yfut = intnx('month',servicedt, 12,'m');
call symput('_beg1ylag',cats("'",year(beg1ylag),'-',put(month(beg1ylag),z2.),"Middle'"));
call symput('_add1yfut',cats("'",year(add1yfut),'-',put(month(add1yfut),z2.),"Middle'"));
Quit;
我得到的结果是空行。我不知道我在做什么或做错了什么......请指导我。另外,请注意,服务不是固定的。每个成员都可以有一个不同的成员 - 正如您在上面看到的。最终,如果他们在 servicedt 周围有 24 个月的连续会员资格,我需要能够选择成员并按他们的组号对他们进行分组。
【问题讨论】:
-
您介意提供预期的输出吗?
-
请提供您的输入数据表的详细信息。请准确了解过去和未来 12 个月的规则。您正在处理哪种类型的医疗保健索赔,这种保险在美国有吗?您给出的要求对于健康保险来说似乎极其简单,而且可能涉及的因素和情况很多。未来 12 个月的覆盖范围的业务原因是什么?这些要求是什么?
-
你的宏变量
&eff来自哪里?您是否正在寻找从某个日期之前的 12 个月到之后的 12 个月连续注册的会员? (那是 25 个月,而不是 24 个月!)除非您涉及大数据,否则为什么要添加 [ds2] 标签?你为什么将你的问题标记为[连续]?它与这个统计概念无关。 -
@yukclam9:一会儿我会整理一张桌子。感谢您的宝贵时间。
-
@WarrenT:当前表格与美国医疗保险系统中的注册相关。还有其他几个要求,但出于分析的目的,我被困在这里,但已经解决了我需要的查询的其他部分。商业客户想要一些趋势摘要,需要我比较之前和之后。关于12个月,他们坚持前12个月和未来12个月不间断覆盖。感谢您的宝贵时间。
标签: sql date db2 sas continuous