我们如何选择unidata查询的最新记录。 我们可以使用任何功能或命令吗?
我有数据
学生学期计划Term_Start_date
1,2018Fall,ABC,08/01/201
1,2018 Spring,MATH,01/01/201
1,2017Fall,HIST,08/01/2017
2,2017Fall,ENG,08/01/2017
2017年夏天,MATH,05/01/2017
我希望看到这样的结果 - 最近的学期开始日期应该显示给每个学生。
学生学期计划Term_Start_date
1,2018Fall,ABC,08/01/201
2,2017Fall,ENG,08/01/2017
我使用了BY.DSND SAMPLE 1,但它只获得了一条记录
答案 0 :(得分:0)
除了编写UniBasic程序来解析数据之外,您可以使用“I或V”类型的VOC条目与LIST查询一起调用。这样的事情。
免责声明:如果您对UniData感到不舒服或没有经验,请不要在您的UniData数据库中输入或删除条目。 没有“撤消”按钮。
请勿输入引用的文字。这只是为了突出正在发生的事情。
AE VOC TEST "TEST or any name that isn't in use"
I "For Insert"
I "I Type entry"
DCOUNT(TERM,@VM); EXTRACT(@RECORD,3,@,0)
PRESS Enter
FI
此时您有一个虚拟VOC条目,您可以将其作为“LIST”查询的条件。像这样。
LIST STUDENT TERM PROGRAM DATE WHEN DATE = TEST
这将返回每个学生的TERM属性的最后一个多值记录。这假设TERM是多值的,并且STUDENT是单值属性。这是如何工作的,它计算值标记,然后根据计数返回记录和相关属性。
必须使用单/多值组合设置文件,以便DCOUNT函数能够计算每个单值属性。在这种情况下,学生可以拥有许多TERM,每个TERM都有自己的日期。现在这不是一个合乎逻辑的排序,它不是基于日历排序日期,而是基于它们在文件中出现的顺序。
01-01-18
05-01-17
01-01-09 <-- Date Returned
---第一个答案---
如果您使用的是Uniquery:
列出CUSTMST ALL BY.DSND @ID SAMPLE 1
将按值对文件进行排序,然后选择1条记录。