仅获取SQL中的记录

时间:2017-03-31 14:43:43

标签: sql

我有两列ID和类型。在ID中有重复的数字,在“NA”,“Cont”和“Dis”类型中。

我需要记录Type不等于“NA”的记录,如果找到“Dis”,则停止计算以下记录。

enter image description here

您可以看到总记录为12的附件,包括所有类型。但删除NA后计数为11但是第7行类型为“Dis”,因此它将忽略所有下面的记录并仅输出s / b 6。

查询:

Select A.ps_indv_id
     , A.Continue
from ( Select A.ps_indv_id
            , A.Continue 
            , A.[Row ID] 
       from [dbo].[DVT_Persist_Claims] A ) A
left join (Select A.ps_indv_id
                , Min(A.[Row ID])[Row ID]
           from (Select A.ps_indv_id
                      , A.Continue
                      , A.[Row ID] 
                 from [dbo].[DVT_Persist_Claims] A ) A
           where A.Continue = 'Discontinue'
           group by A.ps_indv_id ) B
   on A.ps_indv_id = B.ps_indv_id
where A.[Row ID] < B.[Row ID]

示例:

ps_indv_id        Type   Record No.
848803003283483   NA      1
848803003283483   Cont    2
848803003283483   Cont    3
848803003283483   Cont    4
848803003283483   Cont    5
848803003283483   Cont    6
848803003283483   Cont    7
848803003283483   Dis     8
848803003283483   Dis     9
848803003283483   Cont   10
848803003283483   Cont   11
848803003283483   Cont   12

1 个答案:

答案 0 :(得分:0)

这是您正在寻找的结果吗?

select t.type, count(t.type)
from table t
group by t.type
having t.record_no < (
     select Min(record_no)
     from table
     where Type = 'Dis'
     )
and t.type <> 'NA'

如果派生了record_no,那么让我们知道派生它的规则。