我有两列ID和类型。在ID中有重复的数字,在“NA”,“Cont”和“Dis”类型中。
我需要记录Type不等于“NA”的记录,如果找到“Dis”,则停止计算以下记录。
您可以看到总记录为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
答案 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,那么让我们知道派生它的规则。