使用 Oracle 将 2 列从联结 table 合并为一列

Using Oracle combine 2 coloumns into one from junction table

我接管了一个 Oracle 数据库,但几乎所有东西都在一个 table 中。这是一场彻头彻尾的噩梦。所以我创建了一些联结 table 来尝试 trim 详细 table。但是我对如何将 2 个字段转换为一个字段感到困惑。例如下面。

这是详细信息的示例 table。目前,帐户和任务 ID 在 2 个单独的列中。

我已经包含了一个 acc_task_id。我需要用来自连接点 table 的 acc_Task_id 进行填充。帐户和 task_id 匹配的地方。一旦完成。 我将从详细信息 table.

中删除帐户和任务 ID

这将如何结束。

您可以使用 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 不起作用。