1

100 万件のレコードを含むテーブルがあります。これは、いくつかのデータポイントの例を含むテーブルの構造です -

patient   claim   thru_dt   cd   start     
322       65      20200201  42   20181008  
322       65      20200202  42             
322       95      20200203  52             
122       05      20200105  23             
122       05      20200115  42   20190102  
122       05      20200116  42            

この出力を生成するクエリを作成する必要があります-

patient   claim   thru_dt   cd   start     
322       65      20200201  42   20181008    
322       65      20200202  42   20181008    
322       95      20200203  52   20181008    
122       05      20200105  23               
122       05      20200115  42   20190102    
122       05      20200416  42      

患者 322 の 2 番目の請求が行われた理由は、1 番目と 2 番目の請求が20181008同じcd値を持っているためです。

患者 322 の 3 番目の請求に20181008同じ値がなくても値が与えられcdた理由は、それが患者の最後の請求であるためです。

患者 122 の最初のクレームがまだ NULL である理由は、そのクレームのcd値が 42 と等しくないためです。

患者 122 の 3 番目の請求に20190102同じ値があるにもかかわらず、cd値が指定されなかった理由は、前の請求の thru_dt が 30 日以上離れているためです。

これは私がこれまでに試したことです-

--This orders claims using row_number
DECLARE @min_record int;
DECLARE @max_record int;

select 
    @min_record = MIN(row_num), 
    @max_record = MAX(row_num) 
from 
(
    select *, 
    row_number() over(partition by patient order by thru_dt) as row_num
    from 
    table
)

while @min_record <= @max_record
begin 
    --Logic I need help with 
    SET @min_record = @min_record + 1
end 
4

1 に答える 1