我正在尝试编写一些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年多了,才偶然发现的,所以 我们需要找出重复的发票以将其从付款中删除 时间表。
已开具的发票需要有完全不同的项目,其确切数量被视为重复。,,
答案 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;
其他DBMS产品具有类似的功能来进行聚合。在Oracle或SQL Server中,您将使用listagg()
,在MySQL中,您将使用group_concat()
。各个语法会稍有不同(您必须查看手册),但是想法是相同的。