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
我有一个要求,我认为我需要在同一语句中使用两个限定子句。
我需要两列,第一列具有正确的 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