SQL比较股票表,平均价格+ 10%向上和向上更新字段

时间:2015-10-07 08:23:42

标签: sql sql-update compare average

我有一个名为tblStock的SQL表。它包含了我公司销售的数千种库存的详细信息。它包含以下列:

StockID
Make
Model
YearManufacture
Price
GuidePrice

对于此表中未售出的商品,我想根据已售出的库存数据,将预测的销售价值添加到名为GuidePrice的字段中, 例如,如果我有以下项目:

StockID: 123456
Make: VW
Model: Beetle
YearManufacture: 1975
Price: 2000.00
GuidePrice:

我想根据我以前售出的所有1975款大众甲壳虫的价格来计算一个指导价格。

我想在tblStock中取出所有1975年大众甲壳虫的平均价格并加10%,然后向上舍入到最接近的500.00并插入GuidePrice列。

整体计算比这更复杂,但这是我坚持的部分。如果有人能给我一些提示,我会很感激!

编辑: 这有助于获得平均值,但我必须输入每个Make,Model&年 (并在之后完成)

Update tblStock
set GuidePrice=(Select  AVG(Price) 
from tblStock 
INNER JOIN
tblMake ON tblStock.Car_idMake = tblMake.idMake INNER JOIN
tblModel ON tblStock.Car_idModel = tblModel.idModel
where MakeD='Cat'
AND ModelD ='320CL'
AND YearManufacture='2004')

where idStock='140038410'

虽然这根本不起作用;

update tblStock t1
set GuidePrice = (select 1.10 * AVG(Price)
from tblStock t2
where t2.Car_idMake = t1.Car_idMake
                and t2.Car_idModel = t1.Car_idModel
                and t2.YearManufacture = t1.YearManufacture )

其中idStock =' 140038410'

1 个答案:

答案 0 :(得分:0)

这样更新特定车型:

update tblStock t1
set GuidePrice = (select 1.10 * avg(Price)
                  from tblStock t2
                  where t2.Make = t1.make
                    and t2.Model = t1.Model
                    and t2.YearManufacture = t1.YearManufacture)
where StockID = 123456

最近的500.00仍然缺失。

您如何知道汽车是否已售出或未售出?如果未售出,则Price为空吗?

如果是这种情况,并且您想更新所有未售出汽车的GuidePrice,请将上面的WHERE条款替换为:

WHERE GuidePrice IS NULL