问题描述
我正在使用PostgreSQL v.11。我有一张三列的桌子。我的目标是在数据内部发现冗余。
首先,我做一个简单的GROUP BY:
SELECT client,block,"date"
FROM lines
GROUP BY client,"date"
ORDER BY client,block
结果如下:
1 | P10001 | 2020-01-01
1 | P10002 | 2020-04-17
1 | P10002 | 2020-05-04
1 | P10003 | 2020-05-05
现在,我想标识具有相同“块”但具有不同“日期”的行。在此示例中,第2行和第3行就是这种情况(block = P10002)
现在,我使用javascript解析完整的结果集并找到这2个多余的行(我使用result.reduce(...)
)
但是在纯SQL中,有没有办法提取出这种“减少的”结果呢?
预期结果是这样
1 | P10002 | 2020-04-17
1 | P10002 | 2020-05-04
最好将两个日期保留在结果集中,因为我只需要更改其中一个的“块”即可。如果结果集中没有date列,则需要再次请求查找所有受影响的行。
这是表和数据的脚本
CREATE TABLE lines (
"client" integer NOT NULL,"block" text NOT NULL,"date" date NOT NULL
);
INSERT INTO lines ("client","block","date") VALUES
(1,'P10001','2020-01-01'),(1,'P10002','2020-04-17'),'2020-05-04'),'P10003','2020-05-05');
非常感谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)