我是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
答案 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