首页 > 解决方案 > SQL 查询从具有 139 列的表中删除重复项并将所有列加载到另一个表

问题描述

我需要根据 2 列从具有 139 列的表中删除重复项,并将具有 139 列的唯一行加载到另一个表中。

例如:

col1   col2  col3 .....col139
  a      b     .............
  b      c     .............
  a      b     .............

o/p:

col1   col2  col3 .....col139
 a      b     .............
 b      c     .............

需要 DB2 的 SQL 查询?

标签: sqldb2

解决方案


如果“其他表”不存在,您可以像这样创建它

CREATE TABLE othertable LIKE originaltable

并使用以下语句插入请求的行:

INSERT INTO othertable 
    SELECT col1,...,coln
    FROM (SELECT 
              t.*,
              ROW_NUMBER() OVER (PARTITION BY col1, col2 ORDER BY col1) AS num
          FROM t) t
    WHERE num = 1

有许多工具可以生成查询和列列表 - 因此,如果您不想手动编写它,可以使用这些工具生成它,或者使用另一个 SQL 语句从 Db2 目录表 (syscat.columns) 中选择它。


推荐阅读