SQL GROUP BY及其后的缩减版本

问题描述

我正在使用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 (将#修改为@)