【问题标题】:Inserting Duplicate Records into a Temporary Table将重复记录插入临时表
【发布时间】:2017-11-03 15:52:51
【问题描述】:

我有一个包含重复记录的表 ABC。我只想使用 Bteq 将重复记录插入到同一架构中的另一个表 ABC_DUPE 中。 有什么建议吗?

谢谢, 穆克什

【问题讨论】:

    标签: teradata


    【解决方案1】:

    您可以使用QUALIFY 语句来识别和输出重复:

    既然你没有共享你的表...那么考虑以下ABC 表:

    +----+----+----+
    | f1 | f2 | f3 |
    +----+----+----+
    |  1 | a  | x  |
    |  1 | b  | y  |
    |  2 | a  | z  |
    |  2 | b  | w  |
    |  2 | a  | n  |
    +----+----+----+
    

    通过使用字段f1f2 确定唯一记录。在此示例中,f1=2 and f2='a' 的记录与 f3zn 重复。要输出这些,我们使用qualify:

    SELECT *
    FROM ABC
    QUALIFY COUNT(*) OVER (PARTITION BY f1, f2) > 1;
    

    QUALIFY 使用窗口函数来确定输出记录集中包含哪些记录。这里我们使用窗口函数COUNT(*) 通过我们唯一的复合键f1, f2 进行分区。我们只保留该分区上的Count(*) 大于1 的记录。

    这将输出:

    +----+----+----+
    | f1 | f2 | f3 |
    +----+----+----+
    |  2 | a  | z  |
    |  2 | a  | n  |
    +----+----+----+
    

    您可以在CREATE TABLE 语句中使用它,例如:

    CREATE TABLE ABC_DUPE AS
    (
        SELECT *
        FROM ABC
        QUALIFY COUNT(*) OVER (PARTITION BY f1, f2) > 1
    ) PRIMARY INDEX (f1, f2);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多