【发布时间】:2009-08-26 20:18:40
【问题描述】:
短版:
如果表 A 和 B 中的两列都有一个共同的标识符,而这两个列又可能在列 C 中有两个值,我该如何映射它们
让我们说:
A
---
1 , 2
B
---
? , 3
C
-----
45, 2
45, 3
使用表 C 我知道 id 2 和 3 属于同一个项目( 45 ),因此“?”在表 B 中应该是 1。
什么查询可以做这样的事情?
编辑
省略了长版本。这真的很无聊/令人困惑
编辑
我在这里发布一些输出。
从这个查询:
select distinct( rolein) , activityin from taskperformance@dm_prod where activityin in (
select activityin from activities@dm_prod where activityid in (
select activityid from activities@dm_prod where activityin in (
select distinct( activityin ) from taskperformance where rolein = 0
)
)
)
我有以下部分:
select distinct( activityin ) from taskperformance where rolein = 0
输出:
http://question1337216.pastebin.com/f5039557
select activityin from activities@dm_prod where activityid in (
select activityid from activities@dm_prod where activityin in (
select distinct( activityin ) from taskperformance where rolein = 0
)
)
输出:
http://question1337216.pastebin.com/f6cef9393
最后:
select distinct( rolein) , activityin from taskperformance@dm_prod where activityin in (
select activityin from activities@dm_prod where activityid in (
select activityid from activities@dm_prod where activityin in (
select distinct( activityin ) from taskperformance where rolein = 0
)
)
)
输出:
http://question1337216.pastebin.com/f346057bd
以来自第一个查询(来自任务性能 B)的 335 中的活动为例。
它存在于 A 的活动中。
但不是在taskperformance中A(而是a相关活动:92、208、335、595)
存在于结果中。中对应的作用是:1
【问题讨论】:
-
您需要只运行一次此更新,还是在项目的整个生命周期内重复运行此更新?
-
不,只有一次。对于以前的一些问题,我什至将输出打印到文件中,然后搜索和替换内容。就像从表中选择 columnA 然后复制/粘贴到文件中并搜索并将 s/number/insert 替换到表 $1 中,其中 value = $2 等...
-
但是在这一点上我的头很痛,我无法想到“创造性”的选择。
标签: sql oracle missing-data merging-data