文章 Louis Lu · 十二月 24, 2024 1m read

如何基于表格现有数据新增数据列

现有一个数据表的数据像这样:

我们的需求是基于表中的Item列新增一个status字段,如果item的内容是第一次出现,那么status列就是New,反之显示Old,

比如,应该是下面的显示内容

在原文章的回复中, Robert Cemper给出了下面的建议

新建一个存储过程,并在SELECT查询语句中生效:

/// Return NEW for first occurance of item /// otherwise return OLDClass User.ItemStat Extends%RegisteredObject
{
ClassMethod NewOld(item As%String = "") As%String [ SqlProc ]
{
    if item=""quit"?"if$d(^||list(item)) quit"OLD"if$i(^||list(item)) quit"NEW"
}
}

使用下面SELECT语句使之生效:

SELECT *, ItemStat_NewOld(item) asStatusFROM items orderby2

结果如下:

ID	date	  item	Status
109/13/1932	A	NEW204/06/1933DNEW1006/15/1940	A	OLD
411/26/1940	A	OLD
602/19/1956	B	NEW804/22/1957D	OLD
705/01/1959D	OLD
906/29/1961		?
307/04/1992	B	OLD
512/08/2020D	OLD