Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Неправильно удаляются дубли / 5 сообщений из 5, страница 1 из 1
13.12.2018, 13:19
    #39747334
Kontox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неправильно удаляются дубли
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
 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))

Пробую удалть
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
;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"
...
Рейтинг: 0 / 0
13.12.2018, 13:23
    #39747337
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неправильно удаляются дубли
Kontox,

в 1-ом запросе, GROUP BY - по одному списку полей
а во 2-м, PARTITION BY - по другому

С чего тогда ожидать одинаковый результат ?
...
Рейтинг: 0 / 0
13.12.2018, 13:32
    #39747344
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неправильно удаляются дубли
Перечисление всех полей в CTE для удаления излишне.
Достаточно одного поля с ROW_NUMBER().

Ну и PARTITION BY правильно написать, как уже говорили
...
Рейтинг: 0 / 0
13.12.2018, 13:40
    #39747352
Kontox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неправильно удаляются дубли
А как правильно переписать?
...
Рейтинг: 0 / 0
13.12.2018, 13:48
    #39747365
Kontox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Неправильно удаляются дубли
А все, сообразил. Пасип, за наводку.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Неправильно удаляются дубли / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]