0
IID
ごとに複数の日付があり、グループ内でmax(多分最小限)を探しています不足している。次のテストデータましょう:SAS proc sqlグループ内の不足/不足の中で最小/最大を見つけよう
data test;
informat EFF_DATE END_DATE date9.;
length IID $12 EFF_DATE END_DATE 8;
input IID $ EFF_DATE END_DATE;
format EFF_DATE END_DATE date9.;
datalines;
A 11MAY15 .
A 12SEP13 01JAN15
A 13DEC12 .
B 25AUG14 .
B 13JUN17 01JAN15
B 03NOV13 .
;
run;
を私の計画はIID
で最大EFF_DATE
を計算するには、次のコードをオフに構築することですが、END_DATE
は私がsql
でこのロジックを追加する方法を見つけ出すことができない不足している場合のみです。
proc sql noprint;
create table test_fill as
select *,
max(EFF_DATE) /* add something here? */ as MOST_RECENT_EFF_DATE format=date9.
from test group by IID;
quit;
以下は、所望の出力を示していますIID = Bの場合
IID EFF_DATE END_DATE MOST_RECENT_EFF_DATE
A 11MAY15 . 11MAY15
A 12SEP13 01JAN15 11MAY15
A 13DEC12 . 11MAY15
B 25AUG14 . 25AUG14
B 13JUN17 01JAN15 25AUG14
B 03NOV13 . 25AUG14
を、13JUN17はEND_DATEはとても非欠落しているため、我々はそれを受け入れることができない最大の日付であっても、私は次を取る必要があります最高の日付。可能であれば、私はデータの束を書いて後でマージすることができると確信していますが、私はそれをノックアウトしようとします。sql
ありがとう@Joe - 私が探しているものです。ネストされた 'case when'ステートメントは、私のロジックが進んでいくのに役立ちます! – Foxer