楼主: fayzq
2187 2

求助 怎么输出匹配数据 [推广有奖]

  • 0关注
  • 0粉丝

高中生

62%

还不是VIP/贵宾

-

威望
0
论坛币
854 个
通用积分
0.0079
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2244 点
帖子
30
精华
0
在线时间
34 小时
注册时间
2012-9-25
最后登录
2022-12-20

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我这里有张表:
a.png
现在我想这样:
B.png
具体情况是:平时大家上班都会有按手印打卡记录考勤的情况,通过指纹机传输到数据库中,我现在就在处理这个表格,那么我遇到的问题是,因为有些人出于个人原因,有的人按手印了 有的人没按,有的人按了两次,所以就会出现我第一张图,左面的是上班按手印的情况,右面是下班按手印的情况,所以就会有左面有时候有一个数据,右面有两个数据。所以我想让数据以日期匹配,下班是2次,上班是一次,那么在同一天上班就要空出一行来。这样才能进行下一步的计算。这一步我卡住了,有没有大神能帮我解决一下,小弟万分感激啊!
另外有没有更好的思路去算工时?因为可能会有倒班和加班等异常现象发生,所以这个算法我还没想好,也希望才人们提示提示!
我有论坛币送。
二维码

扫码加我 拉你入群

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

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

关键词:有没有 论坛币 数据库 下一步 记录 下一步 数据库 上班

沙发
heperwong 发表于 2013-5-10 16:23:38 |只看作者 |坛友微信交流群
  1. proc sql;
  2. create table morning as
  3. select timeup,timeup1,nameup,idup
  4. from raw       *************raw为原dataset**********;
  5. order by timeup;
  6. quit;

  7. data morning;
  8. set morning;
  9. retain seq;
  10. by timeup;
  11. if first.timeup then seq=1;
  12. else seq=seq+1;
  13. run;

  14. proc sql;
  15. create table afternoon as
  16. select timedown,timedown1,namedown,iddown
  17. from raw
  18. order by timedown;
  19. quit;

  20. data afternoon;
  21. set afternoon;
  22. retain seq1;
  23. by timedown;
  24. if first.timedown then seq1=1;
  25. else seq1=seq1+1;
  26. run;

  27. proc sql;
  28. create table wanted as
  29. select a.timeup,a.timeup1,a.nameup,a.idup,b.timedown,b.timedown1,b.namedown,b.iddown
  30. from morning as a full join afternoon as b
  31. on a.seq=b.seq1 and a.timeup=b.timedown;
  32. quit;
复制代码

使用道具

藤椅
可~乐 发表于 2013-5-10 17:05:48 |只看作者 |坛友微信交流群
  1. data test;
  2. input timeup:yymmdd10. timeup1:time. nameup $ idup
  3.         timedown:yymmdd10. timedown1:time. namedown $ iddown;
  4. format timeup yymmdd10. timeup1 time8. timedown yymmdd10. timedown1 time8.;
  5. cards;
  6. 2013/3/1 10:39:51 李齐 1 2013/3/1 5:13:28 李齐 1
  7. 2013/3/2 9:35:37 李齐 1 2013/3/2 0:22:42 李齐 1
  8. 2013/3/4 9:56:21 李齐 1 2013/3/2 18:13:28 李齐 1
  9. 2013/3/5 10:39:51 李齐 1 2013/3/4 5:13:28 李齐 1
  10. 2013/3/6 10:39:51 李齐 1 2013/3/5 5:13:28 李齐 1
  11. 2013/3/7 10:39:51 李齐 1 2013/3/6 5:13:28 李齐 1
  12. 2013/3/9 10:39:51 李齐 1 2013/3/6 5:13:28 李齐 1
  13. ;
  14. run;

  15. proc sql noprint;
  16.         create table test1 as select
  17.         a.timeup,a.timeup1,a.nameup,a.idup,
  18.         b.timedown,b.timedown1,b.namedown,count(b.iddown) as iddown  
  19.         from test a left join test b
  20.         on a.timeup=b.timedown and a.nameup=b.namedown
  21.         group by b.timedown,b.namedown
  22.         order by a.timeup,a.nameup ;
  23. quit;

  24. data test2;
  25.         set test1;
  26.         by timeup nameup;
  27.         if not first.timeup then do;
  28.                 timeup=.;
  29.                 timeup1=.;
  30.                 nameup="";
  31.                 idup=.;
  32.         end;
  33. run;
复制代码

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-28 12:30