我接管了一个Oracle数据库,但几乎所有内容都在一个表中。这是一场彻头彻尾的噩梦。所以我创建了一些连接表来尝试修剪细节表。但是我难以理解如何将2个字段转换为1个字段。例如下面。
以下是详细信息表的示例。目前帐户和任务ID分为2个单独的列。
我已经加入了acc_task_id。我需要从联结表填充acc_Task_id。帐号和task_id匹配的位置。一旦完成。 我将从详细信息表中删除帐户和任务ID。
这将如何结束。
答案 0 :(得分:1)
您可以使用WHERE EXISTS
:
UPDATE detail_tbl dt
SET dt.acc_task_id = ( SELECT at.acc_task_id FROM acc_task_jun_tbl at
WHERE NVL(at.acc_id, -1) = NVL(dt.acc_id, -1)
AND at.task_id = dt.task_id )
WHERE EXISTS ( SELECT 1 FROM FROM acc_task_jun_tbl at
WHERE NVL(at.acc_id, -1) = NVL(dt.acc_id, -1)
AND at.task_id = dt.task_id );
请注意,我使用NVL(acc_id, -1)
(假设-1
不是该列的有效值),因为NULL = NULL
无法正常工作。