teradata 中同一语句中的两个限定子句

Two qualify clause in same statement in teradata

我有一个要求,我认为我需要在同一语句中使用两个限定子句。

我需要两列,第一列具有正确的 ID(duplicate_cnt=1),另一列具有所有其他 ID(dup_cnt>1)。 基于这些值,我必须更新另一个 table。这在 teradata 中可能吗?

这是我的 table:

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

如何定义"correct"代码,最低值?

使用 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