我試圖找出一種方法來在 SQL 中查找事件是否在 N 天內發生了不同的事件
例如,如果我的資料如下所示:
User_ID Code Date
1122 A 01-01-2020
1122 A 02-01-2020
1122 A 02-01-2020
2233 A 04-01-2020
2233 A 04-01-2020
1122 B 04-01-2020
3344 A 07-01-2020
3344 B 07-01-2020
2233 A 08-01-2020
并說N = 2,這意味著我需要找到事件B是否在2天內發生,每個用戶的事件A,如果是這種情況,我需要過濾掉事件A
所以在我的資料中,第 1 天有一個事件 A,第 2 天有用戶 1122 的兩個事件 A,然后是第 4 天的事件 B。事件 B 發生在用戶 1122 的第一個事件 A 之后 3 天,還有 2 天在用戶 1122 的兩個事件 A 之后。所以應該標記這兩個 A 事件:(對于與 A 在同一天發生事件 B 的用戶 3344 相同,因此也符合 2 天)
User_ID Code Date B_within_2_days
1122 A 01-01-2020 NO
1122 A 02-01-2020 YES
1122 A 02-01-2020 YES
2233 A 04-01-2020 NO
2233 A 04-01-2020 NO
1122 B 04-01-2020 NO
3344 A 07-01-2020 YES
3344 B 07-01-2020 NO
2233 A 08-01-2020 NO
uj5u.com熱心網友回復:
所以一般來說,有兩種方法。您可以創建一個標量函式(或 UDF),它接受所需的引數以針對同一個表運行查詢以查找相關事件 B,然后它只回傳真或假。這不會是很好的表現。
或者,您可以使用存盤程序并使用游標遍歷它們,組裝要回傳的最終結果集。
uj5u.com熱心網友回復:
select User_ID, Code, "Date",
case when Code = 'A' and exists (
select 1 from T where Code = 'B'
and "Date" between t1."Date" and date_add(t1."Date", 2)
) T then 'YES' else 'NO' end as B_within_2_days
from T t1
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/399213.html
上一篇:從列中的給定時間創建15分鐘的時間間隔,并查找每個時間間隔中的值計數
下一篇:嵌套的bash回圈只執行一次
