如何最终但最早出现排行

时间:2019-04-01 00:17:21

标签: date ssms sequential

>>> 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')

0 个答案:

没有答案