Поиск всех строк дубликатов в таблице без первого значения

Уважаемые разработчики! Прошу подсказать как доработать следующий запрос:есть нижеприведенная таблица c повторяющимися значениями в полях date_time, item_id, customer_id. Требуется найти в ней дубликаты, но только без первой строки, с которой начинаются дубли.

select date_time,item_id,customer_id
from Orders
where date_time AND item_id AND customer_id in (
  select date_time,item_id,customer_id
  from orders
  having count(*) > 1
  group by date_time,item_id,customer_id
)
order by date_time,item_id,customer_id;

Я так понимаю, что сейчас код выводит все значения, где есть дубли. Как найти дубликаты без первых значений?

введите сюда описание изображения


Ответы (1 шт):

Автор решения: dzhukov

Вы не указали СУБД. Этот код для MS-SQL (T-SQL). Также не понятно определение "без первых значений", по какому признаку в дубликатах выбирать "первое значение"? В данном примере исключается строка с минимальным значением в поле quanity.

declare
    @t table (date_time datetime, item_id int, customer_id int, quanity int)
declare
    @dt datetime=getdate()

insert into @t
select @dt, 1,1,100
union all
select @dt, 1,1,200
union all
select @dt, 1,1,300
union all
select @dt, 2,2,100

select * from (
    select *, DENSE_RANK() over (partition by date_time, item_id , customer_id order by quanity)  rnk
    ,count (*) over (partition by date_time, item_id , customer_id order by (select 1)) cnt
    from @t
    )t
where rnk !=1 and cnt>1

→ Ссылка