刚开始学sql server,有VBA的基础。需求如下:
在表1中同一个InterID存在不同SID时,将表1中的相应记录添加到表3中,并重新对InterID和EntryID进行赋值。表2是我对表1重复情况判断得出的中间过程表。
规则为:NInterID=InterID+100+SID出现的次数,NEntryID为按NinterID顺序赋值。比如,在InterID=201时,有两个SID(A和B),其中第一次出现的SID为A,对应两条记录,此两条记录的NInterID是一致的,均为原来的InterID+100+1=201+100+1,顺序编写NEntryID,分别为1和2;第二次出现的SID为B,对应一条记录,此一条记录的NentryID=201+100+2。
如果是VBA写很简单,放到数组里循环判断就行。但是sql server这个不会用。请问大概是用什么语句,我好去百度。现在是一点儿眉目也没有。
我不知道怎么判断表1中本行的InerID是否等于上行的InerID。游标看了个一知半解,试了半天也没用对。
表1
InterID EntryID SID
182 1 X
201 1 A
201 2 A
201 3 B
271 1 C
271 2 D
271 3 D
271 4 A
350 1 A
350 2 A
表2
InterID CountSID
201 2
271 3
表3
NInterID NEntryID SID
201+100+1 1 A
201+100+1 2 A
201+100+2 1 B
271+100+1 1 C
271+100+2 1 D
271+100+2 2 D
271+100+3 1 A
窗口函数lag()获取上一行数据的列
lag(列名, 1) over()
over开窗可选分区和排序