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