我有一个要求,我认为我需要在同一声明中使用两个限定条款。
我需要两个第一列,其中包含正确的iD'(duplicate_cnt = 1),另一列包含所有其他ID(dup_cnt> 1)。 基于这些值,我必须更新另一个表。这在teradata有可能吗?
这是我的表:
Name Description Code Data_Source
A XX 101 SCRM
A XX 102 SCRM
A XX 103 SCRM
A XX 104 SCRM
A XX 105 SCRM
A XX 110 BSCRM
这就是我想要的:
Name Description Correct_code Incorrect code Data_Source
A XX 101 102 SCRM
A XX 101 103 SCRM
A XX 101 104 SCRM
A XX 101 105 SCRM
谢谢, AB
答案 0 :(得分:1)
如何定义"正确"代码,最低值?
使用FIRST_VALUE
获取最低值和累积计数以查找其他代码:
SELECT
Name
,Description
,First_Value(Code) -- lowest code
Over (PARTITION BY Data_Source --, Name, Description?
ORDER BY code) AS Correct_code
,code AS Incorrect_code
,Data_Source
FROM dropme
QUALIFY
Count(*) -- only return rows with additional codes
Over (PARTITION BY Data_Source --, Name, Description?
ORDER BY code
ROWS Unbounded Preceding) > 1
编辑:
只要订单&数据列是相同的,你也可以使用简单的
,MIN(Code) -- lowest code
Over (PARTITION BY Data_Source --, Name, Description?
) AS Correct_code