簡體   English   中英

如何將此SAS數據步驟轉換為條件計數器列的oracle sql?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM