SQL UPDATE字段使用来自具有条件的另一行的值

时间:2015-05-07 17:45:53

标签: sql sql-update

我有一张桌子

ItemPriceId
版本
PricingSchemeID
单价
LastModUser
LastModDttm
时间戳
ProdId

此表包含约1300种商品的多种定价方案 我想要做的是将其中一个方案改为另一个方案的倍数 所以如果PricingSchemeID = 102
我想将每个UnitPrice更新为等于每个ProdId的PricingSchemeID = 100(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  

感谢您提前提供任何帮助。

1 个答案:

答案 0 :(得分:1)

这是一个select语句,表示你将表连接到自己之前的内容。

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