SAS Ent指南中的行减法

SAS Ent指南中的行减法,sas,query-builder,enterprise-guide,Sas,Query Builder,Enterprise Guide,我有以下数据集: Row - Customer - Renew Date - Type of Renewal - Days 1 - A - June 10, 2010 - X 2 - A - May 01, 2011 - Y 3 - B - Jan 05, 2010 - Y 4

我有以下数据集:

Row   - Customer    - Renew Date     - Type of Renewal     - Days  
 1       - A        - June 10, 2010        - X                        
 2       - A        - May 01, 2011         - Y  
 3       - B        - Jan 05, 2010         - Y  
 4       - B        - Dec 10, 2010         - Z   
 5       - B        - Dec 10, 2011         - X    
有没有一种方法可以在查询生成器中设置一个条件,将每个客户的第2行减去第1行,这样我就可以有“天”的时间,在这之后客户可以续订其会员资格?
基本上,我需要帮助在查询生成器中减去行。

请转告。

如果您编写一个数据步骤,这并不难。我不知道在查询生成器中很容易做到这一点

data have;
informat renew_date ANYDTDTE.;
format renew_date DATE9.;
infile datalines dlm='-';
input Row Customer $ Renew_Date  Renewal_Type $;
datalines;
 1       - A        - June 10, 2010        - X                        
 2       - A        - May 01, 2011         - Y  
 3       - B        - Jan 05, 2010         - Y  
 4       - B        - Dec 10, 2010         - Z   
 5       - B        - Dec 10, 2011         - X    
 ;;;;
 run;

 data want;
 set have;
 by customer;
 retain prev_days;  *retain the value of prev_days from one row to the next;
 if first.customer then days_since=0; *initialize days_since to zero for each customer's first record;
 else days_since=renew_date-prev_days; *otherwise set it to the difference;
 output;    *output the current record;
 prev_days=renew_date; *now change prev_days to the renewal date so the next record has it;
 run;

这很有帮助。谢谢但是,如果能在查询生成器中以某种方式实现这一点也会很好。我强烈建议不要将查询生成器视为除了简短查询之外的任何工具,因为它实际上并不意味着要做任何复杂的事情。基本上,当你看到“嗯,数据很有趣,我想知道是否有类似……”的时刻时,你会看到这些数据,但不想费心去写数据步骤代码。+1@Joe。此外,查询生成器也很难重用。如果你花了20分钟点击一个好的查询,并想把它应用到另一个表中,你就被卡住了。通过编写代码(SQL或数据步骤),应用到新的输入数据集是很简单的。快速问题。。。。。我必须添加另一个带有sno的列。从零开始。目前,我正在使用两个独立的数据集来完成这项工作。我可以把它合并成一个吗?这就是我写的。------数据want1;集有;按客户分类;保留上一次更新;如果first.customer然后prev_renewal=0;else prev_renewal=prev_renewal+1;产出;跑有没有办法将此查询添加到上面的查询中。请作为一个新问题提问,在评论中回答问题太难了。