根据另一个字段中的值更新/乘以字段

时间:2016-02-03 20:15:54

标签: sql-server tsql

我是SQL的新手,我想解决以下问题。我要编辑的表格如下:

ID | ShopID | ProductID | PurchasePrice
 1 |    1   |    111    | 1,00
 2 |    2   |    111    | 1,40
 3 |    3   |    111    | 1,30
 4 |    1   |    222    | 2,00
 5 |    2   |    222    | 2,50
 6 |    3   |    222    | 2,90
 7 |    1   |    333    | 3,00
 8 |    2   |    333    | 3,80
 9 |    3   |    333    | 3,90
  • ID(独特)
  • ShopID(3个不同的值,代表3个不同的商店)
  • ProductID(指存储更多常见产品信息的不同表格的唯一ID)对于每个不同的ShopID
  • ,可以使用相同的值三次
  • PurchasePrice(随着时间的推移,商店2和3已经编辑了他们的价格,现在已经很乱了)

PurchasePrice 2和3的ShopID值应比PurchasePrice 1的ShopID值高10%,其中ProductID相同。如何在SQL Server 2008中轻松完成此操作?

表格应如下所示:

ID | ShopID | ProductID | PurchasePrice
 1 |    1   |    111    | 1,00
 2 |    2   |    111    | 1,10
 3 |    3   |    111    | 1,10
 4 |    1   |    222    | 2,00
 5 |    2   |    222    | 2,20
 6 |    3   |    222    | 2,20
 7 |    1   |    333    | 3,00
 8 |    2   |    333    | 3,30
 9 |    3   |    333    | 3,30

1 个答案:

答案 0 :(得分:1)

UPDATE t
SET t.PurchasePrice = p.PurchasePrice*1,10
FROM Table t
LEFT JOIN (
SELECT ProductID,PurchasePrice FROM Table WHERE ShopID=1) p ON t.ProductID = p.ProductID
WHERE t.ShopID<>1

在这里,我们获得商店1中的价格列表(参见左连接查询)并更新1号商店的价格到商店1的ProductPrice * 1,10