0

1つの質問で必要なものを表現する方法がわからないため、誤解を招く(ある場合)質問のタイトルで申し訳ありません。

以下のようなデータセットがあります。

UserId    Order    Status
1         1        completed
1         2        completed
1         3        incompleted
2         1        incompleted
2         2        incompleted

たとえば、上記のデータセットを使用すると、ステータスが完了していないユーザーを選択したい場合、得られる結果は次のようになります。

UserId
2

SASデータステップまたはPROC SQLで上記の結果を取得する方法はありますか? 助けていただければ幸いです。事前に感謝します。

4

2 に答える 2

3

このためNOT INに、以下のように句を使用できます-

SELECT DISTINCT Userid
  FROM Your_Table_Name
 WHERE Userid NOT IN
       (SELECT Userid FROM Your_Table_Name WHERE Status = 'completed')
于 2013-06-03T08:54:40.190 に答える
2

これはデータステップのアプローチです。データが既にソートされている場合、proc ソートは必要ありません。

data have;
input UserId Order Status :$11.;
datalines;
1         1        completed
1         2        completed
1         3        incompleted
2         1        incompleted
2         2        incompleted
;
run;

proc sort data=have;
by userid order;
run;

data want (keep=userid);
set have;
by userid;
if first.userid then num_complete=0;
num_complete+(status='completed');
if last.userid and num_complete=0 then output;
run;
于 2013-06-03T11:19:14.593 に答える