>>> data
{'user': [
{'username': 'a', 'data': 'a'},
{'username': 'b', 'data': 'b'},
{'username': 'c', 'data': 'c'},
{'username': 'd'}
]}
在上面的示例中,RegID = 101,有多个“ CMPS”代码。一些RegID,没有“ CMPS”。那些需要首先被过滤掉。第一步,我需要选择那些使用代码“ CMPS”至少出现一次的RegID。
最后一步是选择“ 6”行。这是代码“ CMPS”在最后的连续行中首次出现的代码“ CMPS”。我不需要行“ 1”,因为除了第一个CMPS之后的代码“ CMPS”之外,还有其他代码。我需要选择“ 6”行,因为它是此RegID的最后一组连续“ CMPS”中的最早行。
我尝试过,但是没有用:
RowNo RegID Code UpdateDate
1 101 CMPS 1/12/2017
2 101 MUTC 2/12/2017
3 101 CMPS 10/12/2017
4 101 CMPS 15/01/2018
5 101 MUTC 16/02/2018
6 101 CMPS 30/06/2018
7 101 CMPS 15/07/2018
8 101 CMPS 30/01/2019
最终结果应为:
Select top 100
rux.RegistrationId
,row_number() over (partition by rux.RegistrationId order by rux.UpdateDate, rux.Code ASC) as rownum
,rux.Code
,rux.UpdateDate
from RegUpdatesToFromSTA rux
where Exists (
Select 1
from RegUpdatesToFromSTA ruy
where Code = 'CMPS')