簡體   English   中英

排除 SQL Teradata 組中特定列值之前的行

[英]Exclude rows that come before a specific column value in group SQL Teradata

我在 Teradata 中有以下結構的表。 我的分析在數據上傳后即開始,即 STATUS 列中的狀態為“已上傳”。 我想排除每個組中 STATUS 變為“已上傳”之前的行。 所有事件都是實時發生的,即每個新事件的時間戳值都會增加。

輸入表數據--> table_input

ID  STATUS      TMP
A1  UPLOADED    06/16/2021 08:38:44.535
A1  A           06/16/2021 16:20:40.014
A1  (B)         06/16/2021 17:15:36.488
A1  C           06/16/2021 17:15:36.846
A1  A           06/16/2021 17:15:36.883
B1  A2          06/16/2021 08:34:09.974
B1  L           06/16/2021 08:34:10.271
B1  L           06/16/2021 14:44:33.677
B1  (R)         06/16/2021 14:52:21.812
B1  UPLOADED    06/16/2021 16:05:36.346
B1  AP          06/16/2021 16:05:36.499
B1  (R)         06/16/2021 16:05:36.718
C1  C           06/16/2021 16:05:36.764
C1  UPLOADED    06/16/2021 08:49:43.796
C1  UPLOADED    06/16/2021 08:49:43.841
C1  L           06/16/2021 14:50:39.667
C1  UPLOADED    06/16/2021 14:52:50.149
C1  (R)         06/16/2021 16:05:43.998

預期輸出:從結果中排除狀態為“已上傳”之前的數據。

ID  STATUS      TMP
A1  UPLOADED    06/16/2021 08:38:44.535
A1  A           06/16/2021 16:20:40.014
A1  (B)         06/16/2021 17:15:36.488
A1  C           06/16/2021 17:15:36.846
A1  A           06/16/2021 17:15:36.883
B1  UPLOADED    06/16/2021 16:05:36.346
B1  AP          06/16/2021 16:05:36.499
B1  (R)         06/16/2021 16:05:36.718
C1  UPLOADED    06/16/2021 08:49:43.796
C1  UPLOADED    06/16/2021 08:49:43.841
C1  L           06/16/2021 14:50:39.667
C1  UPLOADED    06/16/2021 14:52:50.149
C1  (R)         06/16/2021 16:05:43.998

我正在使用 Teradata SQL,但 SQL Server SQL 也應該可以工作。 我正在嘗試使用窗口函數,但還沒有取得任何成功。 我們還可以將 TMP 列與 TimeStamp 一起使用,並編寫一個邏輯,例如排除 TimeStamp 值小於“UPLOADED”第一次出現的 TimeStamp 的所有行。

您可以在 Teradata 中使用qualify子句:

select t.*
from t
qualify tmp >= min(case when status = 'UPLOADED' then tmp end) over (partition by id);

而且,雖然您可以為此使用窗口函數,但也可以使用相關子查詢來編寫它:

select t.*
from t
where t.tmp > (select min(t2.tmp)
               from t t2
               where t2.id = t.id and t2.status = 'UPLOADED'
              );

暫無
暫無

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

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