Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Kontox Member Откуда: Сообщений: 146 |
SELECT shop_code, product_id, doc_date, ship_count_mark1, mark_1, Базовые_отгрузки, акционные_отгрузки, ship_mark2, mark_2, Базовые_отгрузки2, Дополнительные_объемы, COUNT(*) FROM AOtest.dbo.[finaltab] GROUP BY shop_code, product_id, doc_date, ship_count_mark1, mark_1, Базовые_отгрузки, акционные_отгрузки, ship_mark2, mark_2, Базовые_отгрузки2, Дополнительные_объемы HAVING COUNT(*) > 1 на выходе 4 строчки, так и должно быть, это правильно!. Их надо удалить (было 916 ,стало 912)) Пробую удалть ;WITH CTE AS( SELECT shop_code, product_id, doc_date, ship_count_mark1, mark_1, Базовые_отгрузки, акционные_отгрузки, ship_mark2, mark_2, Базовые_отгрузки2, Дополнительные_объемы, RN = ROW_NUMBER()OVER(PARTITION BY shop_code, product_id, doc_date order by product_id , ship_count_mark1, mark_1, Базовые_отгрузки, акционные_отгрузки, ship_mark2, mark_2, Базовые_отгрузки2, Дополнительные_объемы) FROM AOtest.dbo.[finaltab]) DELETE FROM CTE WHERE RN > 1 удаляется 6 строк. было 916 стало 910 Почему так, как мне удалить именно те строчки, что нашел "Having count" |
13 дек 18, 13:19 [21762867] Ответить | Цитировать Сообщить модератору |
court Member Откуда: Сообщений: 2269 |
Kontox, в 1-ом запросе, GROUP BY - по одному списку полей а во 2-м, PARTITION BY - по другому С чего тогда ожидать одинаковый результат ? |
13 дек 18, 13:23 [21762873] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47063 |
Перечисление всех полей в CTE для удаления излишне. Достаточно одного поля с ROW_NUMBER(). Ну и PARTITION BY правильно написать, как уже говорили |
13 дек 18, 13:32 [21762885] Ответить | Цитировать Сообщить модератору |
Kontox Member Откуда: Сообщений: 146 |
А как правильно переписать? |
13 дек 18, 13:40 [21762902] Ответить | Цитировать Сообщить модератору |
Kontox Member Откуда: Сообщений: 146 |
А все, сообразил. Пасип, за наводку. |
13 дек 18, 13:48 [21762919] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |