楼主: qz111111
1921 4

sql排序小问 [推广有奖]

  • 0关注
  • 0粉丝

高中生

65%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
154 点
帖子
13
精华
0
在线时间
43 小时
注册时间
2011-4-29
最后登录
2022-5-2

楼主
qz111111 发表于 2014-5-14 21:46:27 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
有如下数据
  id       start            end               condition
001 2009/5/14   2009/5/18               0
002 2009/5/14   2009/5/18               0
003 2009/5/14   2009/5/18               0
002 2009/5/19   2009/5/20               0
001 2009/5/19   2009/5/20               0
001 2009/5/21   2009/5/23               0


想请教各位老大,如何用挑选出每个id第一次start,最后一次end的数据挑选出来(也就是展示进入系统时间),和condition组成新的数据集
另外还想请教下各位怎样标出某一个id在系统中是第几次出现?望高人指点,感激不尽~
二维码

扫码加我 拉你入群

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

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

关键词:sql condition dition Start STAR start 如何

沙发
zhengbo8 发表于 2014-5-14 22:46:34
  1. data a;
  2.         input id $
  3.                 start $ 12.
  4.                 end $ 12.
  5.                 condition;
  6. datalines;
  7. 001  2009/5/14   2009/5/18   0
  8. 002  2009/5/14   2009/5/18   0
  9. 003  2009/5/14   2009/5/18   0
  10. 002  2009/5/19   2009/5/20   0
  11. 001  2009/5/19   2009/5/20   0
  12. 001  2009/5/21   2009/5/23   0
  13. ;

  14. proc sql noprint;
  15.         create table result as
  16.                 select distinct id,min(start) as start,max(end) as end,condition from a
  17.                         group by id
  18.                         order by id;
  19. run;
复制代码

藤椅
intheangel 学生认证  发表于 2014-5-14 22:51:18
第一次出来和第一次进去的好办;
  1. proc sql;
  2. select max(end) as end, min(start) as start,condition from a
  3. group by id;
  4. quit;
复制代码
第几次出现这个,写个宏吧,和前面那个分开;
  1. data x;
  2. input id $3. start yymmdd10. end yymmdd10. condition;
  3. cards;
  4. 001 2009/5/14 2009/5/18 0
  5. 002 2009/5/14 2009/5/18 0
  6. 003 2009/5/14 2009/5/18 0
  7. 002 2009/5/19 2009/5/20 0
  8. 001 2009/5/19 2009/5/20 0
  9. 001 2009/5/21 2009/5/23 0
  10. ;
  11. run;
  12. data y;
  13. run;

  14. %macro a;
  15. %do i=001 %to 003;
  16. data z;
  17. set x;
  18. if id=&i;
  19. retain t;
  20. t+1;
  21. output;
  22. run;

  23. data y;
  24. set y z;
  25. if id=. then delete;
  26. run;
  27. %end;

  28. proc sql;
  29. drop table x ,z;
  30. quit;
  31. %mend a;
  32. %a
复制代码
我是一只瘦瘦的小猪~~~
╭︿︿︿╮
{/-◎◎-/}
( (oo) )
  ︶︶︶

板凳
zhengbo8 发表于 2014-5-14 22:58:12
  1. data a;
  2.         input id $
  3.                 start $ 12.
  4.                 end $ 12.
  5.                 condition;
  6. datalines;
  7. 001  2009/5/14   2009/5/18   0
  8. 002  2009/5/14   2009/5/18   0
  9. 003  2009/5/14   2009/5/18   0
  10. 002  2009/5/19   2009/5/20   0
  11. 001  2009/5/19   2009/5/20   0
  12. 001  2009/5/21   2009/5/23   0
  13. ;

  14. proc sort data=a;by id;run;

  15. data result2;
  16.         retain n 0;
  17.         set a;
  18.     by id;
  19.         if first.id then n=0;
  20.         n=n+1;
  21. run;
复制代码

报纸
qz111111 发表于 2014-9-23 19:49:05
十分感谢楼上各位给出的方案 谢谢!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-24 10:20