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
我有一个table
ItemPriceId
版本
定价方案 ID
单价
LastModUser
LastModDttm
时间戳
产品编号
此 table 包含大约 1300 件商品的多种定价方案。
我想做的是将其中一个方案更改为另一个方案的倍数。
所以如果 PricingSchemeID = 102
我想将每个 ProdId
这是示例数据:
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