纠正产品买卖日期明智数据中的错误

时间:2012-10-23 19:51:11

标签: sas

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

2 个答案:

答案 0 :(得分: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;

如果你想一步完成这两项工作,你可以轻松地存在两个存在的子查询[和(不存在(...)或不存在(...))]或两个连接。

答案 1 :(得分:0)

数据样本;

设置PRODINVENTRY;

格式日期日期。;

如果INVENTRY&gt; UNITS然后INVENTRY = UNITS;

运行;