如何在同一个表的两列之间循环联接,以获取新列中的最后一个匹配值

时间:2019-05-22 12:17:27

标签: sql netezza

有一个折叠的表,其中有两列:Column_A和Column_B。 基于此表,应创建另一个表,其中Column_A保持不变,但B列会更改。

Column_A | Column_B                      Column_A  |  New_Column_B
--------------------                     --------------------------
   1     |    3                              1     |     9
   2     |    8                              2     |     19
   3     |    9                ==>           3     |     9
   5     |    12                             5     |     12
   8     |    17                             8     |     19
   17    |    19                             17    |     19

对于每一行,我们检查Column_B,它是否存在于Column_A中?
是?看一下Column_B,它出现在Column_A中吗?
是的,.. Column_B中的值被添加到新列中,以实现Column_B和Column_A之间的最后匹配。

column_A中没有重复项,总共有大约一百万行。 用SQL for Netezza编写此代码的最有效方法是什么?

我尝试了以下查询,它适用于B与A匹配的单个情况。 但不适用于Netezza。

SELECT Column_A, 
coalesce(
(
 SELECT Column_B
 FROM Collapsed c2 
 WHERE c1.Column_B=c2.Column_A
),Column_B
) as B
FROM Collapsed c1;

0 个答案:

没有答案