Найти все дублированные счета в SQL - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь написать некоторый SQL, чтобы позволить мне получить результат возможных дублированных счетов-фактур, которые будут иметь одинаковые [одинаковые элементы с одинаковым количеством], которые можно выдать дубликатами

  • Счет-фактура В среднем около 300 Элемент

  • Всего подлежит пересмотру около 2500 Счет-фактура

Ниже приведен пример счета-фактуры только с1 штук или около того, но в реальных элементах населения среднее значение составляет 300

<b>
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
</b>

Надеемся, что ожидаемый результат будет

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

Но счет содержит около 200 единиц, а дублированные счета имеютбыть одинаковыми и иметь одинаковое количество для них.

It's SQL_Server

И результат должен соответствовать целому элементу счетов-фактур Как в счете-фактуре А имеется 300 строк различных предметов с каждым количеством2 Результаты должны быть такими, чтобы все накладные имели точно такую ​​же позицию 300 с точным количеством.

Поставщик выдал несколько дублированных счетов в наш бухгалтерский отделпо ошибке за 4 года он был обнаружен случайно, поэтому нам нужно найти дубликат счета-фактуры, чтобы удалить его из графика платежей.

Выписанные счета-фактуры должны содержать точно разные позиции с точным количеством, которое будет считаться дублированным. ,,,

1 Ответ

0 голосов
/ 12 июня 2019

Вы не указали свой продукт СУБД, поэтому этот ответ для 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;

Онлайн пример


Другие продукты СУБД имеют аналогичные функции для агрегирования.В Oracle или SQL Server вы должны использовать listagg(), в MySQL вы будете использовать group_concat().Индивидуальный синтаксис будет немного отличаться (вы должны проверить руководство), но идея та же.

...