Поиск всех строк дубликатов в таблице без первого значения
Уважаемые разработчики! Прошу подсказать как доработать следующий запрос:есть нижеприведенная таблица 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
