Я поражен приведенным ниже сценарием. вам нужна ваша помощь в изменении моего запроса на основе приведенных ниже выборочных данных. Моя цель - создать EVENT AND EVENT_LOW, используя данные, доступные из таблиц TEM_GT и TXN.запрос oracle sql для возврата строк путем устранения дубликатов
TEM_GT (глобальная временная таблица)
est_id primary key, trans_id, trp_id, amount
1 111 2221 1.5
2 111 3332 2.0
3 112 4443 3.0
TXN стол
trans_id, trans_type
111 type1
112 type1
СЛУЧАЙ стол
event_id primary key, trans_id, trans_type, flag.
1000 111 type1 N
1001 112 type1 N
EVENT_LOW таблица (финальный стол)
event_low_id primary key, event_id, est_id, amount.
9991 1000 1 1.5
9992 1000 2 2.0
9993 1001 3 3.0
insert into(event_low_id, event_id, est_id, amount)
(
select event_low_id_s.nextval e.event_id, tg.est_id, tg.amount from
from TEM_GT tg, EVENT ee
WHERE
tg.trans_id = e.trans_id
AND e.flag = 'N'
);
на основе TEM_GT и TXN GT, заполнение данных в таблице EVENT. Теперь, когда я пытаюсь заполнить данные в таблице EVENT_LOW, приведенный выше запрос возвращает 5 строк вместо 3 строк. Это связано с trp_id в таблице TEM_GT. Я не хочу добавлять trp_id в таблицу EVENT и хочу обработать дублирование в вышеупомянутом запросе select.
Я использую Oracle 11g. Пожалуйста помоги мне с этим.
Я просто построю ниже sql. Это почти разрешает мою проблему. Но иногда он возвращает другое значение для столбца суммы. Мне нужен мой результат event_low, как показано ниже для est_id .
event_low_id primary key, event_id, est_id, amount.
9991 1000 1 1.5
9992 1000 2 2.0
Но когда-то он возвращает
event_low_id primary key, event_id, est_id, amount.
9991 1000 1 1.5
9992 1000 2 1.5
или
event_low_id primary key, event_id, est_id, amount.
9991 1000 1 2.0
9992 1000 2 2.0
select *
from (select x.*,
row_number() over (partition by event_id order by event_id) rn
from (seelct e.event_id, tg.est_id, tg.amount
from TEM_GT tg, EVENT e
WHERE
tg.trans_id = e.trans_id
AND e.flag = 'N'
) x
)
where rn = 1
Любая помощь в унисон его дальше, чтобы получить точный результат. Заранее спасибо
Пожалуйста, измените свой пост и форматировать дизайн таблицы и код SQL образца. – alzaimar
Информация в вашем вопросе не соответствует описанному вами поведению. В вашей базе данных больше строк, соответствующих SQL, чем те, которые вы показываете выше! –
Вы должны проверить свой вопрос, потому что он имеет несколько ошибок: TEM_GT: est_id = 2, но это 1 для соответствующей строки в EVENT_LOW. Синтаксис вставки неверен, имя таблицы отсутствует. Причина, по которой вы получаете 5 строк, вероятно, состоит из 2 строк в EVENT с trans_is = 111. –