SQL 使用符合条件的另一行中的值更新字段

SQL UPDATE field using value from another row with criteria

我有一个table

ItemPriceId
版本
定价方案 ID
单价
LastModUser
LastModDttm
时间戳
产品编号

此 table 包含大约 1300 件商品的多种定价方案。
我想做的是将其中一个方案更改为另一个方案的倍数。
所以如果 PricingSchemeID = 102
我想将每个 ProdId

的每个 UnitPrice 更新为等于 PricingSchemeID = 100's (UnitPrice*1.40)

这是示例数据:

ItemPriceId PricingSchemeID UnitPrice ProdId   
    1             100         10.25     1  
    2             100         18.52     2  
    3             100         12.25     3  
    4             100         19.00     4  
    5             100         21.00     5  
    6             101         16.62     1  
    7             101         15.84     2  
    8             101         12.95     3  
    9             101          8.25     4  
    10            101          6.50     5  
    11            102         63.95     1  
    12            102         44.25     2 
    13            102         75.26     3 
    14            102         96.25     4 
    15            102         56.58     5 
    16            103         12.25     1 
    17            103         13.25     2 
    18            103         14.25     3 
    19            103         15.25     4 
    20            103         16.25     5 
    21            104         25.35     1 
    22            104         53.26     2 
    23            104         15.65     3 
    24            104         43.65     4 
    25            104         96.35     5 

所以它应该这样做:

ItemPriceId PricingSchemeID UnitPrice ProdId   
    11            102         14.35     1  
    12            102        25.928     2  
    13            102         17.15     3  
    14            102         26.60     4  
    15            102         29.40     5  

提前感谢您的帮助。

这是一个 select 语句,它代表了你想要加入 table 本身的内容。

SELECT yt1.itempriceid
    , yt1.pricingschemeid
    , yt2.unitprice * 1.4
    , yt1.prodid
FROM yourTable yt1
    JOIN yourTable yt2 ON yt1.prodid = yt2.prodid
WHERE yt1.pricingschemeid = 102 
    AND yt2.pricingschemeid = 100

这里跟更新一样。

UPDATE yt1
SET yt1.unitprice = yt2.unitprice * '1.4'
FROM yourTable yt1
    JOIN yourTable yt2 ON yt1.prodid = yt2.prodid
WHERE yt1.pricingschemeid = 102 
    AND yt2.pricingschemeid = 100