在SQL中查找整个重复发票

时间:2019-06-11 21:56:25

标签: sql-server group-by string-aggregation

我正在尝试编写一些SQL,以使我能够获得可能具有相同[相同项目,数量相同]的重复发票的结果,这可能是重复发出的

  • 发票项目平均约300个项目

  • 发票总数将在2500张左右修订

以下是只有1个左右的发票示例,但实际人口中平均为300


Inv_ID Item_Code Item_Q
A-800   101010  24
A-801   101010  24
A-802   202020  9
A-803   101010  18
A-804   202020  9
A-805   202020  9
A-806   101010  18

希望得到的结果将是

A-800, A-801
A-802, A-804, A-805
A-803, A-806

但是发票大约有200个项目,重复的发票必须具有相同的项目并且数量必须完全相同。

 It's SQL_Server

并且结果需要匹配整个发票项目 就像发票A有300个不同的物料行,每个物料行数量2 结果需要所有发票的确切数量与完全相同的300个项目。

  

供应商已向我们的会计核发多张重复的发票   系误了4年多了,才偶然发现的,所以   我们需要找出重复的发票以将其从付款中删除   时间表。

     

已开具的发票需要有完全不同的项目,其确切数量被视为重复。,,

1 个答案:

答案 0 :(得分:0)

您未指定DBMS产品,因此此答案适用于Postgres

select string_agg(inv_id, ',' order by inv_id) as inv_ids
from the_table
group by item_code, item_q
order by inv_ids;

Online example


其他DBMS产品具有类似的功能来进行聚合。在Oracle或SQL Server中,您将使用listagg(),在MySQL中,您将使用group_concat()。各个语法会稍有不同(您必须查看手册),但是想法是相同的。