Получите записи, которые имеют одинаковые номера привязанных к одному заказу - PullRequest
0 голосов
/ 10 апреля 2019

Мне нужно найти все заказы, к которым прикреплены дубликаты клиентов.

 SalesNo           CustNo
  112233              56
  998877              12
  998877              33
  110044              312

Он должен вернуть результаты:

 SalesNo      CustNo
 998877           12
 998877           33

Я попробовал следующий сценарий, но я думаю, что он получит только те заказы, которые содержат повторяющиеся записи с точно такими же данными.

select salesno, custno, COUNT(*)
from sales
GROUP BY salesno, custno
HAVING COUNT(*) > 1

Ответы [ 6 ]

2 голосов
/ 10 апреля 2019

Вы можете сравнить значения в предложении having:

select salesno, COUNT(*)
from sales
group by salesno
having min(custno) <> max(custno)
1 голос
/ 10 апреля 2019

Я понял это. Сделал следующее:

select a.salesno, a.custno
from sales a
LEFT JOIN(
select salesno, custno
from sales
)b ON a.salesno = b.salesno
WHERE a.salesno = b.salesno AND a.custno <> b.custno
ORDER BY a.salesno
0 голосов
/ 10 апреля 2019

с cte (custno, cnt) as (выберите 11235,12 union all выберите 11235,14 union all выберите 11236,22 union all выберите 11237,33) выберите * Cte где custno in (выберите custno из группы cte custnoс COUNT (*)> 1)

0 голосов
/ 10 апреля 2019

Сначала необходимо найти дубликаты номеров заказов

select salesno
from sales
GROUP BY salesno
HAVING COUNT(*) > 1

Затем выполнить поиск записей этих заказов

WITH duble AS (
    select salesno
    from sales
    GROUP BY salesno
    HAVING COUNT(*) > 1
)

SELECT s.* 
FROM sales s
INNER JOIN duble d ON s.salesno=d.salesno
0 голосов
/ 10 апреля 2019

Еще один вариант - использовать WITH TIES совместно с sum() over()

Пример

Select Top 1 with ties *
 from YourTable
 Order By sign(sum(1) over (partition by SalesNo) - 1) Desc

Возвращает

SalesNo CustNo
998877  12
998877  33
0 голосов
/ 10 апреля 2019

Вы можете использовать ключевое слово DISTINCT:

select salesno, custno, COUNT(*)
from sales
GROUP BY salesno, custno
HAVING COUNT(DISTINCT custno) > 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...