[英]How can I convert this SAS datastep to oracle sql for a conditional counter column?
對於這個問題的普遍性,我深表歉意。 我正在嘗試創建一列,該列根據當前觀察值與先前觀察值之間的時間將行分組在一起。 下面的代碼是我編寫的可在SAS中正常工作的代碼。 但是,由於數據步驟的運行方式與oracle sql的運行方式有關,我無法弄清楚如何在oracle sql中執行此操作。 任何幫助將不勝感激!
DATA GROUP;
SET LAG1;
BY CUSTOMER_KEY;
IF (TIME_BTW>5 OR TIME_BTW=.) THEN JOURNEY=0;
JOURNEY+1;
IF FIRST.CUSTOMER_KEY THEN GROUP=0;
IF JOURNEY=1 THEN GROUP+1;
RUN;
似乎您正在基於time_btw
定義組。 您似乎想要一個解析函數。 我認為代碼是這樣的:
select t.*,
sum(case when time_btw > 5 then 1 else 0 end) over (partition by customer_key order by ??) as grp
from t;
請注意,在SQL中(與SAS不同),表表示無序集。 這意味着您需要指定順序的列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.