0

很抱歉这个奇怪的问题标题,但不确定如何以简洁的方式真正描述这个问题。

我们的一个客户希望我编写一个查询,从他们的数据库中消除重复记录。如果我们有这样的样本数据集:

╔══════╦════════╦════════╦═══════════════╗
║ Code ║ Amount ║ Client ║     Type      ║
╠══════╬════════╬════════╬═══════════════╣
║ 'a'  ║    950 ║ 'Lisa' ║ 'Available'   ║
║ 'b'  ║    550 ║ 'Bob'  ║ 'Unavailable' ║
║ 'b'  ║    500 ║ 'Bob'  ║ 'Available'   ║
║ 'c'  ║    500 ║ 'Dave' ║ 'Available'   ║
║ 'c'  ║    500 ║ 'Dave' ║ 'Unavailable' ║
╚══════╩════════╩════════╩═══════════════╝

它们没有每个记录的唯一标识符(不幸的是)。“代码”指的是一个实体,但它可能有多个记录。例如,我想要SELECT Code, Amount, Client, TypeGROUP BY代码”,然后选择具有MIN(Amount).

我可以使用 GROUP BY 提取代码和 Min(Amount),但我无法为这些特定记录选择所有列。

4

1 回答 1

1

根据您使用的 RDBMS,您可能会通过 row_number 函数获得所需的内容:

select code, amount, client, type
from (select *, row_number() over (partition by code order by amount) as rowrank 
      from table
     ) sub
where rowrank = 1
于 2013-06-17T22:24:57.003 回答