SQL按匹配值及最近较小值查询数据并更新价格分段表成本
我需要从某张表的行中获取满足某一字段匹配,同时与目标值匹配或选取小于目标值的最邻近值的对应数据,以此更新价格分段表的成本字段,以下是表示例,我已经给出了逐行更新的实现方法。
供应商成本表(Vendor Cost)
| 零件(Part) | 数量(Quantity) | 成本(Cost) |
|---|---|---|
| BLK CAT | 20 | 5 |
| BLK CAT | 50 | 4 |
| BLK CAT | 100 | 3 |
| BLK CAT | 250 | 2 |
| BLK CAT | 500 | 1 |
| WHT CAT | 5 | 68 |
| WHT CAT | 25 | 50 |
| WHT CAT | 60 | 25 |
更新前价格分段表(Price Breaks before update)
| 零件(Part) | 数量(Quantity) | 成本(Cost) |
|---|---|---|
| BLK CAT | 25 | |
| BLK CAT | 50 | |
| BLK CAT | 80 | |
| BLK CAT | 100 | |
| BLK CAT | 200 | |
| WHT CAT | 10 | |
| WHT CAT | 25 | |
| WHT CAT | 50 |
更新后价格分段表(Price Breaks after update)
| 零件(Part) | 数量(Quantity) | 成本(Cost) |
|---|---|---|
| BLK CAT | 25 | 5 |
| BLK CAT | 50 | 4 |
| BLK CAT | 80 | 4 |
| BLK CAT | 100 | 3 |
| BLK CAT | 200 | 3 |
| WHT CAT | 10 | 68 |
| WHT CAT | 25 | 50 |
| WHT CAT | 50 | 50 |
现有实现的更新语句
Update #StandardPList Set UnitCost = VC.Cost From #StandardPList Inner Join ( Select PartNum, Cost From #VendorCost Where PartNum = @PartNum And BreakQty = ( Select Top 1 Max(BreakQty) As NextLowBrk From #VendorCost Where PartNum = @PartNum And BreakQty < @Qty ) ) VC On #StandardPList.PartNum = VC.PartNum And #StandardPList.Quantity = @Qty
内容的提问来源于stack exchange,提问作者dklaudt
相关产品推荐
相关产品推荐

