2013-07-03 98 views
0

,我有以下數據集:減去行

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  

有沒有一種方法,我可以把查詢生成器的條件在那裏減去第1行第2行的每一位客戶,讓我可以有客戶續訂其會員資格後的「天數」?
基本上,我需要幫助減去查詢生成器中的行。
請adivse。

回答

1

如果你寫一個datastep,這並不難。我不知道這很容易在Query Builder中完成。

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; 
+0

這非常有幫助。謝謝。但是,也可以知道在查詢生成器中是否可以以某種方式完成此操作。 – learnlearn10

+2

我強烈建議不要考慮使用Query Builder作爲除簡短查詢之外的任何工具 - 它並不是要做任何複雜的事情。當你看到數據但不想被寫入數據步驟代碼時,它基本上就是當你有「嗯,這些數據很有趣,我想知道是否有像......」這樣的時刻。 – Joe

+0

+1 @ Joe。此外,查詢生成器也很難重用。如果您花費20分鐘的時間點擊您的方式查看優秀的查詢,並希望將其應用於其他表格,則會卡住。通過編寫代碼(SQL或數據步驟),將其應用於新的輸入數據集是微不足道的。 –