select id,return_document, sales_document, serial_number
from (
select row_number() over (partition by id order by id) as rno, *
from myTable) tmp
where rNo = 1;
字符串 您可以任意选择每个ID的其中一行。或者使用ppostgreSQL的Distinct on:
SELECT DISTINCT ON (id) id, return_document, sales_document, serial_number
FROM myTable;
with umatch as (select *
from (select id, row_number() over (order by id) rn from (select distinct id from myTable) t1) _t1
inner join
(select serial_number, row_number() over (order by serial_number) rn
from (select distinct serial_number from myTable) t2) _t2 on _t1.rn = _t2.rn)
select t2.*
from umatch t1
inner join myTable t2 on t1.serial_number = t2.serial_number and t1.id = t2.id;
1条答案
按热度按时间uoifb46i1#
你的行已经是不同的。如果你只想根据id不同,那么其他值来自哪一行?如果这不重要,那么你需要的是一个Id的分组,以及其他列的一些虚拟聚合(即; max(return_document),max(sales_document),max(serial_number))。或者你可以这样做:
字符串
您可以任意选择每个ID的其中一行。或者使用ppostgreSQL的Distinct on:
型
| ID|返回文件|销售单据|序列号|
| --|--|--|--|
| 88687 |RFC-01-2300082|苏ICP备05002207号-1| R1H-03490|
| 88688 |RFC-01-2300082|苏ICP备05002207号-1| R1H-03490|
DBFiddle demo
编辑:这将适用于这个非常特定的数据集,它可能不适用于另一个(你只给了这个):
型
DBFiddle demo的
请下次明确你的要求,并提供足够的数据和所需的文本输出(人们不喜欢SO上的图片)。