簡體   English   中英

SQL 查詢以獲取具有與同一標識符相關的事件序列的時間范圍的記錄

[英]SQL query to get records of a timeframe with sequence of events related to the same identifier

我正在學習 SQL,我堅持這個:

我有這個帶有日期格式 (dd/mm/yyyy) 的示例表:

日期 ID 地位
2022 年 10 月 9 日 xxx 打開
07/07/2022 xxx 發表
01/06/2022 xxx 發送
10/08/2022 yyy 打開
08/08/2022 yyy 發表
01/08/2022 yyy 發送

我想獲取最近3個月的記錄:

 SELECT * FROM TABLE WHERE  Date >= DATEADD(DAY, -90, GETDATE())
 
 AND
 
 Date <= DATEADD(DAY, 0, GETDATE())

效果很好,但我的問題是所有狀態(已發送、已交付和已打開)都應包含在時間范圍內的每個 ID。

所以上面的查詢會完美地得到我的 ID yyy但對於xxx它會破壞它,因為發送的狀態行是在 01/06/2022

我嘗試group by ID並使用Status IN ('sent','delivered','opened')

但它不起作用並顯示所有記錄!

想要的 output與 yyy 的記錄只是同一張表,因為 xxx 狀態“已發送”的一條記錄超出了時間范圍。

效果很好,但我的問題是所有狀態(已發送、已交付和已打開)都應包含在時間范圍內的每個 ID。

添加條件以僅過濾在時間范圍內具有所有 3 種狀態的 ID:

SELECT * 
FROM TABLE 
WHERE Date >= DATEADD(DAY, -90, GETDATE())
  AND Date <= DATEADD(DAY, 0, GETDATE())
QUALIFY COUNT(DISTINCT CASE WHEN Status IN ('sent','delivered','opened') 
                       THEN status END) 
        OVER(PARTITION BY Id) = 3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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