Sas 更正产品买卖日期数据中的错误

Sas 更正产品买卖日期数据中的错误,sas,Sas,这是带有units inventry的产品购买/销售日期数据。数据中有错误。 1.卖出的单位比买的多。 2.买之前先把单位卖了。 我想通过更改存储区内的日期或单位来删除所有错误输入或更正数据。注意:只有在为一家商店购买了产品之后,才能销售产品。第二部分的SQL解决方案与第一部分的SQL解决方案没有太大区别。您可以使用联接或exists子查询来完成此操作。类似地,您已经解决的第一部分可以使用以下任一方法来解决:;以下是现有版本: DATA PRODINVENTRY; INPUT STORE $ P

这是带有units inventry的产品购买/销售日期数据。数据中有错误。 1.卖出的单位比买的多。 2.买之前先把单位卖了。
我想通过更改存储区内的日期或单位来删除所有错误输入或更正数据。注意:只有在为一家商店购买了产品之后,才能销售产品。

第二部分的SQL解决方案与第一部分的SQL解决方案没有太大区别。您可以使用联接或exists子查询来完成此操作。类似地,您已经解决的第一部分可以使用以下任一方法来解决:;以下是现有版本:

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 
;
如果您想在一个步骤中同时执行这两个操作,您可以轻松地拥有两个exists子查询[并且不存在…或不存在…]或两个联接。

数据示例

设置产品目录

格式化日期9

如果库存>单位,则库存=单位


运行

我建议你提供一些关于如何解决这个问题的信息。如前所述,这看起来像是一个家庭作业问题,没有人仅仅为你解决它就帮了任何人的忙;如果这不是家庭作业,你仍然应该思考如何解决这个相当简单的问题。如果您对您的方法的某些元素可能如何工作有更具体的问题,您将获得更多有用的反馈,并了解更多有关SAS的信息。我使用sql解决了这个问题,但只有我能解决产品问题,购买的单位比售出的单位更多。我是sas的新手,请帮我一个忙;创建表格错误,选择S.*,S.UNITS-B.UNITS作为额外销售单位从BUYINVENTRY作为B出售,右键连接SELLINVENTRY作为S在B.PRODUCT=S.PRODUCT和B.STORE=S.STORE中,B.UNITSproc 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;