Обновить запрос на дубликаты записей Oracle - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь написать заявление об обновлении для приведенного ниже сценария.

card_no - первичный ключ таблицы, а гражданский номер - данные.

выходной столбец должен быть обновлен с помощью запроса, как показано ниже.

Это запрос select, который я написал, чтобы получить данные, упорядоченные следующим образом. но мне нужен выходной столбец обновления наконечника, как показано на рисунке ниже.

этот оператор выбора будет выводить только дублированные значения, он может быть 2 или более раз, поэтому в зависимости от количества дубликатов D строка должна быть добавлена ​​к выходу с гражданским номером.

Не знаю, с чего начать, будет полезна помощь.

SELECT LC.CARD_NO,LC.CIVIL_NO
FROM CARD LC
JOIN DUPLICATE_CARD ST2 ON LC.CIVIL_NO=ST2.CIVIL_NO
WHERE  LC.CIVIL_NO IS NOT NULL 
ORDER BY LC.CIVIL_NO; 

enter image description here

1 Ответ

0 голосов
/ 05 июля 2018

Вы можете использовать аналитическую функцию count с LPAD

SELECT card_no
    ,LPAD('D', count(civil_no) OVER (
            PARTITION BY civil_no ORDER BY card_no
            ), 'D') || civil_no as output
FROM t;

Демо

Не ясно, какую таблицу вы хотите обновить, вы можете сделать это с помощью коррелированного обновления, используя вышеуказанный выбор или MERGE INTO

UPDATE t t1 
SET    output = (SELECT output 
                 FROM   (SELECT card_no, 
                                lpad('D', COUNT(civil_no) 
                                            over ( 
                                              PARTITION BY civil_no 
                                              ORDER BY card_no ), 'D') 
                                || civil_no AS output 
                         FROM   t) t2 
                 WHERE  t1.card_no = t2.card_no); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...