Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
kirill_d Member Откуда: Сообщений: 6 |
в процедуре есть часть кода:if( exists( select 1 from [dbo].[import_penalty] i left join dbo.penalty p on i.UIN = p.UIN where i.importStateId = 0 and p.kod is null )) begin проверяет по уникальным UIN в базе PENALTY, и тех которых нет из базы import_penalty далее добавляет. все работает в таком варианте прекрасно много месяцев. теперь пришли изменения - в базе import_penalty теперь возможно несколько записей с одинаковым UIN и надо взять только 1 ту запись в которой 'id' максимальное из них. возможно ли это прописать в данный отбор? |
31 июл 17, 09:08 [20686844] Ответить | Цитировать Сообщить модератору |
kirill_d Member Откуда: Сообщений: 6 |
либо может быть перед этим в процедуре выполнить delete дублей чтобы остался в таблице import_penalty только с макс id запись. такое возможно? как это прописать? |
31 июл 17, 09:10 [20686848] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
так можно удалить дубли, оставив только строки с максимальным id для каждого UIN:with cte as ( select *, ROW_NUMBER() over(partition by UIN order by id desc) rn from dbo.penalty ) delete cte where rn > 1; |
31 июл 17, 09:25 [20686876] Ответить | Цитировать Сообщить модератору |
kirill_d Member Откуда: Сообщений: 6 |
Да. такой вариант сработал вроде нормально! Спасибо! |
31 июл 17, 10:13 [20686982] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |