Ошибка выдачи запроса «Отсутствует оператор выбора» - PullRequest
0 голосов
/ 05 октября 2019

При выполнении этого выдает ошибку «Отсутствует оператор выбора». Я пытаюсь удалить дубликаты записей в соответствии с приведенным ниже сценарием.

With CTE as (
  select exrt, currencyfrom, currencyto, ratetype, year, 
    period, validfrom, factor, rate, 
    ROW_NUMBER() OVER (
      PARTITION BY exrt, currencyfrom, currencyto, 
        ratetype, year, period, validfrom, factor, rate
      ORDER BY exrt, currencyfrom, currencyto, ratetype, year, period,
        validfrom,factor,rate
    ) row_num 
  from udt_dp_exchangerate 
    where validfrom = TO_DATE('2019-SEP-28', 'YYYY-MON-DD') and period = '9'
) 
delete from cte where row_num > 1

Ответы [ 2 ]

0 голосов
/ 05 октября 2019

В оракуле CTE не допускается с оператором удаления.

Вам нужно попробовать следующий запрос:

Delete from udt_dp_exchangerate
Where (rowid, 1) not in
(select rowid,
        ROW_NUMBER() OVER (PARTITION BY                     
         exrt,currencyfrom,currencyto,ratetype,year,period,validfrom,factor,rate
         ORDER BY 
         exrt,currencyfrom,currencyto,ratetype,year,period,validfrom,factor,rate
         ) row_num 
from udt_dp_exchangerate 
where validfrom = TO_DATE('2019-SEP-28', 'YYYY-MON-DD') 
  and period='9')

Cheers !!

0 голосов
/ 05 октября 2019

Вместо CTE следует попробовать запрос ниже -

DELETE FROM udt_dp_exchangerate UDE1
WHERE ROWID > (SELECT MIN(ROWID)
               FROM udt_dp_exchangerate UDE2
               WHERE UDE1.exrt = UDE2.exrt
               AND UDE1.currency = UDE2.currency
               AND UDE1.currencyto = UDE2.currencyto
               AND UDE1.ratetype = UDE2.ratetype
               AND UDE1.year = UDE2.year
               AND UDE1.period = UDE2.period
               AND UDE1.validfrom = UDE2.validfrom
               AND UDE1.factor = UDE2.factor
               AND UDE1.rate = UDE2.rate)
AND UDE1.validfrom = TO_DATE('2019-SEP-28', 'YYYY-MON-DD')
AND UDE1.period='9';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...