Prepにはそのような便利な機能はありません。Prepで並び替えをする方法を紹介!」でご紹介したRANK()関数と、結合(Join)の合わせ技でやる方法をご紹介します!サンプルデータこちらが今回使うサンプルデータです。会員ID、購入日をデータとして持っています。IDごとに購入日でソートし、1行上の購入日を取得する、という感じです。フロー全体像まず今回作るフローの全体像がこちらです。Stepごとに手順を説明していきます。【Step1】会員IDごとに購入日の昇順でソートし、連番を振る前回の記事の最後に、RANK()は連番を振るのにも使える、ということをご紹介しました。計算フィールドを作成し、次の式を入れます。{ORDERBY[購入日]ASC:RANK()}}会員ID別に連番が振られました。(会員IDの並び順は順不同になっていますが、今はこのまま進めます。)【Step2】RecordIDに+1した列を追加するクリーニングステップを追加し、計算フィールドを作成します。これで、会員IDごとに1行上にずらしたデータを結合し取得することができます。Joinなので、各会員IDの先頭行のRight側のデータにはnullが入ります。Joinしたままの結果だと不要な列もあり見づらいので、最後に後処理をします。【Step4】後処理をする次の処理をしてデータを整えます。・不要列を削除するRight側(Step2の結果)のいらない列は削除します・列名を変更するRight側(Step2の結果)の購入日を「前回購入日」にリネーム・会員IDごとに並び替えるこれはやらなくてもよいですが、結果を見やすくするため、RANK()関数を利用してソートします。後処理をした結果がこちらです。前回購入日に1レコード前の購入日が取得できています。PrepではRANKがないとやっていけないよ・・・というくらい多用しました。(共感していただける方がいらっしゃれば嬉しいです!)truestarはマーケティング及びデータ分析の経験と技術を生かしたコンサルティングサービスを強みとしています。↓すぐに使えるオープンデータが揃っています。ついてのお知らせです。