全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2532 3
2013-11-23
大家好,我遇到一个疑问,就是排序的时候是按三个变量排,但是set by 的时候只取开头和最后的变量,这样的程序我以前跑没问题,但是最近一次跑,总提示出现错误,说set by的变量没有排列好?这是什么原因呢?谢谢帮忙!


proc sql;
  CREATE TABLE alert_p3 AS
  SELECT
    a.medicaid_num,
    b.PCP_PROVIDER_ID_2001_3 AS pcp_provider_id,
    c.provider_name_2003 AS managed_care_plan_name,
    datepart(b.DATE_BEGIN_PCP_3331_1) AS Date_Begin_PCP format = mmddyy10.,
    datepart(b.DATE_END_PCP_3331_2) AS Date_End_PCP format = mmddyy10.
  FROM
    high.c_age_medicare a
  INNER JOIN
    DM_med.omh_recip_prepaid_cap_date b ON
/*   medicaid.omh_recip_prepaid_cap_date b */
      a.medicaid_num = b.recipient_id_1010
  INNER JOIN
    DM_med.DIM_MCAID_PROV_CURRENT c ON
    /* medicaid.provider_current c  */
      b.PCP_PROVIDER_ID_2001_3 = c.provider_id_2001
  WHERE
    Pcp_Capitation_Code_3330 <> '0' AND
    DATE_BEGIN_PCP_3331_1 < &enddt. AND
    DATE_END_PCP_3331_2 >= &enddt.
  ORDER BY
    medicaid_num,
    DATE_BEGIN_PCP_3331_1,
    DATE_END_PCP_3331_2;
quit;


* Take the most recent pcp dates;
data alert_plan_eligib_p3;
   set alert_p3;
   by Medicaid_num date_end_pcp;
   if last.medicaid_num=1;
run;


ERROR: BY variables are not properly sorted on data set
       WORK.ALERT_P3.






二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2013-11-23 08:17:58
本来想试着在Order by 那里去掉中间的变量,看会不会和原来的结果有不同,但是家里没有装SAS,所以麻烦各位帮帮忙!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-11-23 09:50:01
估计你以前的数据,按照3个变量排序,和按照2个变量排序的结果是一样的,所以没报错。。。
Order by 那里去掉中间的变量,结果跟之前的结果还是一样的,只是排序不一样。。。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2013-11-23 21:22:38
可~乐 发表于 2013-11-23 09:50
估计你以前的数据,按照3个变量排序,和按照2个变量排序的结果是一样的,所以没报错。。。
Order by 那里去 ...
谢谢你的帮忙!我也觉得结果应该不会有变化。 这一段程序是以前的人留下的,所以我比较倾向于保持它原来的样子,以免报告出现问题。不过这个月跑,这边就出错了,我就像你说的,去掉order by中间的变量, 然后继续跑接下来的程序。 可是,后来出来的结果比上个月多出1/8的数据,可能是因为中途我SAS没反应造成,也可能是因为当天server有问题,反正我觉得结果不可能多出那么多。后来没时间了,就只好跟老板说星期一再试一次…唉……
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群