Unibasic / Unidata查询

时间:2018-04-25 18:57:33

标签: sql unidata

我们如何选择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,但它只获得了一条记录

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条记录。