【发布时间】:2021-09-10 00:52:51
【问题描述】:
我在 Teradata 中有具有以下结构的表。一旦上传数据,我的分析就会开始,即状态列中的状态为“已上传”。我想排除在 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 的所有行。
【问题讨论】:
-
@DaleK 我会记住这一点
标签: sql sql-server teradata window-functions