【发布时间】:2019-01-07 11:39:24
【问题描述】:
Proc SQL 版本=9.4。没有可使用的 Windows 功能。
有客户id、时间段(月)、金额和对应的类别。
client_id data_period amount class
1 200801 30000 2
2 200801 17000 1
3 200801 9000 1
1 200802 30000 2
2 200802 55555 2
3 200802 11000 2
阈值金额 = 20 000。
amount > 20k 得到 class= 2,amount class= 1
client_id = 1,200801 和 200802 的数量和类别相同。 client_id = 2,数量从 17k 增加到 55.5k,类更改正确,从 1 到 2。 client_id =3,数量在同一类1(
想要的结果是
client_id oldDate newDate AmtOld AmtNew ClassOld ClassNew Good Bad
2 200801 200802 17000 55555 1 2 1 0
3 200801 200802 9000 11000 1 1 0 1
我尝试应用自联接来获取 btw 数据周期的所有差异,但输出中的行太多。下面的数据不是来自上面的例子,是实数。
client_id oldDate newDate AmtOld AmtNew ClassOld ClassNew
A001687463 200808 200802 -5613 1690386 I03 I04
A001687463 200807 200802 -5613 1690386 I03 I04
A001687463 200806 200802 -5613 1690386 I03 I04
A001687463 200805 200802 -5613 1690386 I03 I04
PROC SQL;
CREATE TABLE WORK.'Q'n AS
SELECT distinct
t1.client_id, t1.data_period as oldDate, t2.data_period as newDate, t1.amount as expAmtOld, t2.amount as expAmtNew, t1.class as classOld, t2.class as classNew
FROM WORK.'E'n t1, WORK.'E'n t2
where
t1.client_id = t2.client_id and
t1.amount <> t2.amount
order by t1.client_id;
【问题讨论】:
-
不要尝试用SQL做顺序处理。只需使用数据步骤。您也无法运行 SAS 版本 7.13。您可能正在使用某些 9.x 版本。 7.13 可能只是帮助您向 SAS 提交代码的 Enterprise Guide GUI 界面中的版本号。
-
示例结果中的数据与示例输入中的数据不匹配。
-
嗨,汤姆!这只是一个例子,数据不是真的匹配。
-
proc sql 版本=9.4
-
我无法理解您的规则实际上是什么。 20K与这个问题有什么关系?你怎么知道某事是否正确?您在搜索什么时间段?连续时间段是什么意思?输入和预期输出的简单示例将有助于澄清您在说什么。