-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. 买之前卖掉单位。我想通过更改商店内的日期或单位来删除所有错误输入或纠正数据。注意:只有在一个商店购买了产品后才能出售产品。

4

2 回答 2

0

第二部分的 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;

如果您想一步完成这两项,您可以轻松地拥有两个存在子查询 [and (not exists (...) or not exists (...) )] 或两个连接。

于 2012-10-24T14:13:39.113 回答
0

数据样本;

设置 PRODINVENTRY;

格式化日期 DATE9.;

如果 INVENTRY > UNITS 那么 INVENTRY = UNITS;

跑;

于 2013-02-10T00:22:49.540 回答