使用另一个表替换两列中的ID

时间:2018-01-16 03:42:15

标签: sql sql-server join

我有两张桌子:

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

我尝试过连接和联合的组合,但似乎没有什么能给我所需要的东西。

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试:您可以使用LEFT JOIN来获得所需的输出。我们可以使用ID_Equiv为这两列添加单独的联接,以检索所需的值以更新列DestinationOrigin

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