-1
DATA PRODINVENTRY;
INPUT STORE $ PRODUCT $  BUY_SELL $ DATE DDMMYY10. UNITS PRICE INVENTRY;
CARDS; 
1 pen      B 01/01/2012 2  10.00 2 
1 pen      B 04/02/2012 8  15.00 10 
1 pen      S 08/02/2012 10 15.00 0 
1 pencil   B 02/02/2012 5  5.00 5 
1 pencil   S 04/02/2012 4  7.00 1 
2 book     B 01/01/2012 5  20.00 5 
2 book     S 05/02/2012 6  30.00 -1 
2 notebook B 02/02/2012 4  15.00 4 
2 notebook S 04/02/2012 5  15.00 -1 
3 rubber   B 01/01/2012 2  5.00 2 
3 rubber   B 02/02/2012 2  5.00 4 
3 rubber   B 04/02/2012 2  5.00 6 
3 rubber   S 05/02/2012 5  5.00 1 
4 slipper  B 01/01/2012 3  150.00 3 
4 slipper  B 02/02/2012 5  200.00 8 
4 slipper  B 04/02/2012 5  100.00 13 
4 slipper  S 05/02/2012 14 90.00 -1 
5 desktop  B 02/02/2012 4  30000.00 4 
5 desktop  S 04/02/2012 3  30000.00 1 
5 desktop  S 05/02/2012 1  30000.00 0 
5 laptop   S 01/01/2012 3  20000.00 -3
5 laptop   B 08/02/2012 8  20000.00 5 
;

これは、ユニットの在庫を含む製品の売買の日付ごとのデータです。データに誤りがあります。1. ユニットを購入するより販売する。2.購入する前にユニットを販売しました。間違った入力をすべて削除するか、日付または店舗内の単位を変更してデータを修正したい。注 : 1 つのストアで商品が購入された後に販売される商品のみがあります。

4

2 に答える 2

0

データサンプル;

PRODINVENTRY を設定します。

FORMAT DATE DATE9.;

INVENTRY > UNITS の場合、INVENTRY = UNITS;

走る;

于 2013-02-10T00:22:49.540 に答える
0

2 番目の部分に対する SQL ソリューションは、最初の部分とそれほど変わりません。結合または存在するサブクエリを使用してそれを行うことができます (同様に、既に解決した最初の部分はどちらでも解決できます)。存在するバージョンは次のとおりです。

proc sql;
create table error as
    select * from PRODINVENTRY S
    where buy_sell='S' and not exists (
        select 1 from PRODINVENTRY B
        where B.buy_sell='B' and B.store=S.store and B.product=S.product and B.date<S.date);
quit;

両方を 1 つのステップで実行したい場合は、2 つの存在するサブクエリ [and (存在しない (...) または存在しない (...) )] または 2 つの結合を簡単に作成できます。

于 2012-10-24T14:13:39.113 に答える