私のスクリプトは動作しているはずだが、それは効率的ではないかもしれないし、主な問題は私が仕事でそれを実行するには時間がかかり過ぎていると思う、セッションが終了する前に全セッションが中止されています。SQLスクリプトを最適化する:別のテーブルから範囲値を取得する
私は基本的に2つのテーブル 表A持っている - 人は
Person's_ID Transaction TransactionDate
---------------------------------------
123 A 01/01/2017
345 B 04/06/2015
678 C 13/07/2015
123 F 28/10/2016
表Bを行うすべての取引が含まれている - 個人のIDが含まれていますし、私が何をしたいのかGraduationDate
は人がアクティブであるかどうかを確認です。 アクティブ=卒業予定日の1ヶ月前に相手が行った取引が1件以上の場合
私は何百万人もの人がいて、各人が複数の取引を行い、表Aの行は
SELECT
PERSON_ID
FROM
(SELECT PERSON_ID, TRANSACTIONDATE FROM TABLE_A) A
LEFT JOIN
(SELECT CIN, GRAD_DATE FROM TABLE_B) B
ON A.PERSON_ID = B.PERSON_ID
AND TRANSACTIONDATE <= GRAD_DATE
WHERE TRANSACTIONDATE BETWEEN GRAD_DATE - INTERVAL '30' DAY AND GRAD_DATE;
*表AとBはサブクエリです。
出力はどのようになりますか? –
FYIと同様に、where句は内部結合になります。実際に外部結合が必要な場合は、where節をon節に移動する必要があります。 – Andrew
こんにちは@GordonLinoff、私が期待しているのは、 "アクティブ"なPERSON_IDのリストです - これは、人のそれぞれの卒業予定日から30日以内にトランザクションを意味します。 – Joy