私はproc sqlを使用しています。条件が満たされている場合は、複数のcase when文を使用して、0または1の列を追加します。ステートメントがどのような場合に各IDをスキャンする必要があるので、今は大きなボトルネックです。だから私は、すべてのcase文を繰り返し処理するのではなく、各繰り返しを実行するためにcase文を何とか入れ子にする方法を見つけ出そうとしています。SASの各繰り返しのステートメントが複数のケースを実行する方法は?
これは私のコードの例ですが、今は長すぎます。
SELECT *,
CASE WHEN loannumber IN (
SELECT loannumber FROM PREPAY_LOAN_IDS
) THEN 1
ELSE 0 END AS PREPAY_FLAG,
CASE WHEN loannumber IN (
SELECT loannumber FROM DPD_30_IDS
) THEN 1
ELSE 0 END AS DPD_30_FLAG,
CASE WHEN loannumber IN (
SELECT loannumber FROM DPD_60_IDS
) THEN 1
ELSE 0 END AS DPD_60_FLAG,
CASE WHEN loannumber IN (
SELECT loannumber FROM DPD_90_IDS
) THEN 1
ELSE 0 END AS DPD_90_FLAG,
CASE WHEN loannumber IN (
SELECT loannumber FROM DPD_120_IDS
) THEN 1
ELSE 0 END AS DPD_120_FLAG,
CASE WHEN loannumber IN (
SELECT loannumber FROM FORECLOSURE_IDS
) THEN 1
ELSE 0 END AS FORECLOSURE_FLAG
FROM(
SELECT *
FROM MORTGAGES
)
なぜあなたは 'FROM MORTGAGES'ではなく' FROM'ステートメントでサブクエリを使用していますか? – EMUEVIL
おそらく、 'loannumber'のすべてのテーブルを' LEFT JOIN'するのが速く、それが速くなるかどうかを確かめるでしょう。 – EMUEVIL
これらのテーブルのいずれかに重複した 'loannumber'値が含まれていますか? – user667489