在Oracle SQL中,可以使用窗口函数和DELETE语句来实现扁平化重复行的操作。下面是一个示例代码:
CREATE TABLE test_table (
id NUMBER,
value VARCHAR2(100)
);
INSERT INTO test_table VALUES (1, 'A');
INSERT INTO test_table VALUES (1, 'B');
INSERT INTO test_table VALUES (1, 'C');
INSERT INTO test_table VALUES (2, 'D');
INSERT INTO test_table VALUES (2, 'E');
INSERT INTO test_table VALUES (3, 'F');
DELETE FROM (
SELECT id, value, ROW_NUMBER() OVER (PARTITION BY id, value ORDER BY id) rn
FROM test_table
)
WHERE rn > 1;
SELECT * FROM test_table;
输出结果如下:
ID | VALUE
---|------
1 | A
1 | B
1 | C
2 | D
2 | E
3 | F
在上面的示例中,使用窗口函数ROW_NUMBER()来为每个重复行分配一个序号rn,根据id和value进行分区。然后使用DELETE语句删除序号大于1的行,即删除重复行。最后,查询结果表以验证删除的结果。
上一篇:扁平化一个数据帧的列表