Sql server 如何计算SQL Server过程中的百分比

Sql server 如何计算SQL Server过程中的百分比,sql-server,tsql,stored-procedures,Sql Server,Tsql,Stored Procedures,Sql Server 2014 表Pricelist有三列:Id、StoreId(Sid)、Price Data format Id Sid Price 1 12 $4 1 16 $2 2 12 $6 2 16 $10 我想做的是有一个程序来比较商店12的价格和商店16的价格,如果一个商店的单个商品价格比另一个商店的便宜,那么计算节省百分比,并插入到一个单独的表中或价格列旁边的节省列中 下面的SQL代码显示了%的节省,但我不确定是否以最有效的方式进

Sql Server 2014

Pricelist
有三列:
Id、StoreId(Sid)、Price

Data format

Id  Sid Price
1   12    $4 
1   16    $2
2   12    $6
2   16    $10
我想做的是有一个程序来比较商店12的价格和商店16的价格,如果一个商店的单个商品价格比另一个商店的便宜,那么计算节省百分比,并插入到一个单独的表中或价格列旁边的节省列中

下面的SQL代码显示了%的节省,但我不确定是否以最有效的方式进行

select distinct p1.[Store id],
case when p1.Price>p2.Price then (100*(p1.Price-p2.Price)/p1.Price) 
else (100*(p2.Price-p1.Price)/p2.Price)
end as Saving
from Prices$ p1
join Prices$ p2
on p1.[Item Id]=p2.[Item Id]
请给我一些建议

多谢各位


RG

您希望在末尾添加
和p1.[store id]p2.[store id]
,这样您就不会比较同一个门店。你不知道另一家商店是什么。这重要吗?另外,
distinct
是额外的工作。确定你是否真的需要它。最好使用
p1.[store id]@PanagiotisKanavos这个逻辑
p1.[store id]