У меня есть случай, когда мне нужно заполнить целевую таблицу, у меня есть столбец "CUSTOMER_ID", который имеет повторяющиеся значения в различных строках.Мне нужно заполнить целевую таблицу только одной строкой из CustomerID независимо от того, какая из них (она может быть выбрана случайным образом).Обычно я использую процедуру, выполняемую для этого запроса:
DELETE FROM Source.SALARY
WHERE ROWID NOT IN (SELECT MAX (ROWID)
FROM Source.SALARY
GROUP BY CUSTOMER_ID);
Этот запрос удаляет дубликаты на CUSTOMER_ID и оставляет только одну строку.
Теперь я хочу создать пользовательский шаг в моем модуле знаний Integration Knowledgeкоторый использует скрипты Groovy для имитации этого запроса с использованием интерфейса ODI.Я уже пробовал использовать приведенный ниже код, но я новичок в Groovy и, похоже, не могу найти решение:
delete from <%=snpRef.getTable("L","TARG_NAME","A")%>
where <%=odiRef.getColList("", "ROWID")%> not in (
select MAX(<%=odiRef.getColList("", "ROWID")%>)
from <%=snpRef.getTable("L","INT_NAME","A")%>
GROUP BY <%=odiRef.getColList("","[COL_NAME]","\n\tand\t","","UK")%>
where 1=1)
Может ли кто-нибудь помочь мне приспособить этот код для моего запроса Oracle SQL?