Избегайте дублирования записей из определенного столбца таблицы - PullRequest
0 голосов
/ 09 июля 2020

У меня есть таблица, как показано на изображении. В столбце Number значения отображаются более одного раза (например, 63 появляется дважды). Я хотел бы оставить только одно значение. Пожалуйста, посмотрите мой код: удалить из t1, где

  (SELECT *,row_number() OVER (          
          PARTITION BY 
            Number
          ORDER BY 
            Date) as rn from t1  where   rn > 1)

Он показывает ошибку. Может ли кто-нибудь помочь?

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

Ответы [ 3 ]

1 голос
/ 09 июля 2020

Столбец, созданный с помощью row_number (), не был доступен для вашего основного запроса, чтобы включить это, вы можете создать быстрый подзапрос и использовать желаемый фильтр

SELECT *
FROM
(
SELECT *,
row_number() OVER (PARTITION BY Number ORDER BY Date) as rn 
FROM t1 ) T
where rn = 1;
0 голосов
/ 09 июля 2020

если вы хотите сохранить только одно значение, rn = 1 вместо «> 1»

0 голосов
/ 09 июля 2020

partition by определяет, как повторяются номера строк. Номера строк присваиваются каждой группе из partition by клавиш. Таким образом, вы можете получить дубликаты.

Если вам нужен уникальный номер строки для всех строк, просто опустите partition by:

select t1.*
from (select t1.*,
            row_number() over (order by date) as rn        
      from t1 
     ) t1
where rn > 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...