我对以下情况感到震惊。需要您帮助根据以下示例数据修改我的查询。我的目标是使用 TEM_GT 和 TXN 表中的可用数据创建一个 EVENT AND EVENT_LOW。
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 行。这是由于 TEM_GT 表中的 trp_id。我不想在 EVENT 表中添加 trp_id,并且想处理上述选择查询中的重复消除。
我正在使用 Oracle 11g。请帮助我。
我只是构建下面的sql。它几乎解决了我的问题。但有时它会为金额列返回不同的值。我希望我的 event_low 结果如下所示 est_id 1。
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
任何帮助进一步调整它以获得准确的结果。提前致谢