我有两张桌子:
ID_Equiv:
PDA_ZoneID Distribution_ZoneID
101 1
102 2
103 3
104 4
105 5
Distribution_byDistribID:
Origin Destination Distribution
1701 1 0.1
1701 2 0.2
1701 3 0.3
1701 4 0.4
1701 5 0.1
1 1701 0.1
2 1701 0.2
3 1701 0.3
4 1701 0.4
5 1701 0.1
1704 1 0.1
1704 2 0.2
1704 3 0.3
1704 4 0.4
1704 5 0.1
1 1704 0.1
2 1704 0.2
3 1704 0.3
4 1704 0.4
5 1704 0.1
我想使用ID_Equiv表替换Distribution_byDistribID
表中的ID以使用PDA_ZoneID
而不是Distribution_ZoneID
,并提供以下内容:
Origin Destination Distribution
1701 101 0.1
1701 102 0.2
1701 103 0.3
1701 104 0.4
1701 105 0.1
101 1701 0.1
102 1701 0.2
103 1701 0.3
104 1701 0.4
105 1701 0.1
1704 101 0.1
1704 102 0.2
1704 103 0.3
1704 104 0.4
1704 105 0.1
101 1704 0.1
102 1704 0.2
103 1704 0.3
104 1704 0.4
105 1704 0.1
我尝试过连接和联合的组合,但似乎没有什么能给我所需要的东西。
谢谢!
答案 0 :(得分:0)
尝试:您可以使用LEFT JOIN
来获得所需的输出。我们可以使用ID_Equiv
为这两列添加单独的联接,以检索所需的值以更新列Destination
和Origin
UPDATE dd SET
dd.Destination = ISNULL(ie.PDA_ZoneID, dd.Destination),
dd.Origin = ISNULL(ie1.PDA_ZoneID, dd.Origin)
FROM Distribution_byDistribID dd
LEFT JOIN ID_Equiv ie ON dd.Destination = ie.Distribution_ZoneID
LEFT JOIN ID_Equiv ie1 ON dd.Origin = ie1.Distribution_ZoneID
如果您只想选择它:
SELECT
ISNULL(ie1.PDA_ZoneID, dd.Origin) AS Origin,
ISNULL(ie.PDA_ZoneID, dd.Destination) AS Destination,
dd.Distribution
FROM Distribution_byDistribID dd
LEFT JOIN ID_Equiv ie ON dd.Destination = ie.Distribution_ZoneID
LEFT JOIN ID_Equiv ie1 ON dd.Origin = ie1.Distribution_ZoneID