在SQL查询中,在一列中查找重复项,然后使用第二列确定要返回的记录

在SQL查询中,在一列中查找重复项,然后使用第二列确定要返回的记录,sql,db2,Sql,Db2,我有一个表,其中的数据如下: ╔═══════════╦═════════════╦═════════╗ ║ Column1 ║ Column2 ║ Column3 ║ ╠═══════════╬═════════════╬═════════╣ ║ 127001126 ║ 90489495251 ║ 1 ║ ║ 127001126 ║ 90489495251 ║ 2 ║ ║ 134024323 ║ 81999000004 ║ 1 ║ ║ 34612

我有一个表,其中的数据如下:

╔═══════════╦═════════════╦═════════╗
║   Column1 ║   Column2   ║ Column3 ║
╠═══════════╬═════════════╬═════════╣
║ 127001126 ║ 90489495251 ║       1 ║
║ 127001126 ║ 90489495251 ║       2 ║
║ 134024323 ║ 81999000004 ║       1 ║
║ 346122930 ║   346000016 ║       2 ║
║ 346122930 ║   346000016 ║       1 ║
║ 346122930 ║   346000016 ║       3 ║
║ 346207637 ║   346000016 ║       1 ║
║ 346207637 ║   346000016 ║       3 ║
╚═══════════╩═════════════╩═════════╝
我需要一个输出:

╔═══════════╦═════════════╦═════════╗
║  Column1  ║   Column2   ║ Column3 ║
╠═══════════╬═════════════╬═════════╣
║ 127001140 ║ 90489495251 ║ 2       ║
║ 134024323 ║ 81999000004 ║ NULL    ║
║ 346122930 ║   346000016 ║ 2       ║
║ 346207637 ║   346000016 ║ NULL    ║
╚═══════════╩═════════════╩═════════╝
基本上检查第1列和第2列中是否有多条记录,检查是否有第3列=2的记录,如果有,请将该记录向后拉。如果第1列和第2列从来没有column3=2的组合,则使用column3=null将一条记录拉回来

编辑: 我试过的代码:

   Select *
from (SELECT* From sometable
Where   column3 = 2) D Full outer join 
(SELECT*  FROM sometable
Where   coulmn3 = 1) E 
on  D.Column1 = E.Column1 
and D.Column2 = E.Column2
(SELECT * from
FROM    sometable
    Where   coulmn3 = 3) F Full outer join
    on  E.Column1 = F.Column1 
    and E.Column2 = F.Column2

我知道上述操作不会将column3值更改为null。但是我想,如果每个column1和column2组合都至少有一条记录,那么在DB2上也应该这样做:

SELECT Column1, Column2, 
       MAX (CASE Column3 WHEN 2 THEN 2 ELSE NULL END)
  FROM t
 GROUP BY Column1, Column2;
有关ORACLE数据库的详细信息,请参阅

结果:

COLUMN1     COLUMN2         COLUMN3
---------   -----------     -------
134024323   81999000004     (null)
127001126   90489495251     2
346122930   346000016       2
346207637   346000016       (null)

您使用的是哪种数据库管理系统?博士后?Oracle?为什么输出不包括
127001126 | 90489495251 | null
?因为我只想为每个column1/column2组合保存一条记录,而Column3的值2是流程的键如果2不存在,则为null。您确定输出表与所需结果匹配吗?您已将
127001116
更改为
127001126
,但输出表中未显示
127001126
。问题是我需要返回多个其他列。。。这些是我唯一需要过滤的…不是100%确定你的意思-你能添加一个完整的样本输出吗?无论如何,您可以将其用作过滤器的基础,例如,在或中。只是一些例子……;)