繁体   English   中英

将列添加到同一表中的查询中,更新重复列中的值?

[英]Add Column to Query From Same Table, Update Values in Duplicated Column?

我正在设法弄清楚这一点。 在这种情况下,该数据库中特定城市的天然气价格正在上涨,因此他们需要将其价格提高20%。 我应该创建一个查询,该查询将仅显示该城市的新价格。 这是应该的样子:

在此处输入图片说明

这是我的代码:

Select ProductID, tblProduct.ProductType, Price, SUM((Price *.20)+Price) AS 'Increased Price'
From tblProduct join tblCompany
    On tblProduct.CompanyID = tblCompany.CompanyID
Where tblCompany.CompanyID IN
    (Select CompanyID
    From tblCompany
    Where City = 'Kalamazoo')
Order By ProductID

但是,当我执行代码时,出现以下错误:

消息8120,级别16,状态1,行1在选择列表中的列'tblProduct.ProductID'无效,因为它既不包含在聚合函数中也不在GROUP BY子句中。

我不知道我在做什么错。 谁能启发我?

如果您仅计算20%的价格上涨,则实际上并不需要SUM函数。

Select ProductID, tblProduct.ProductType, Price, ((Price *.20)+Price) AS 'Increased Price'
From tblProduct join tblCompany
    On tblProduct.CompanyID = tblCompany.CompanyID
Where tblCompany.CompanyID IN
    (Select CompanyID
    From tblCompany
    Where City = 'Kalamazoo')
Order By ProductID
Select tblProduct.ProductID, tblProduct.ProductType, tblProduct.Price, SUM((tblProduct.Price *.20)+tblProduct.Price) AS 'Increased Price'
From tblProduct join tblCompany
    On tblProduct.CompanyID = tblCompany.CompanyID
Where tblCompany.CompanyID IN
    (Select c.CompanyID
    From tblCompany c
    Where c.City = 'Kalamazoo')
Order By ProductID

SUM()建议使用聚合查询。 您没有GROUP BY ,因此初始列( ProductId等)无效。

使用表别名进行查询是一个好主意。 这些使查询更易于编写和阅读。 所以:

Select p.ProductID, p.ProductType, p.Price, ((p.Price * 1.20) AS IncreasedPrice
From tblProduct p join
     tblCompany c
     On p.CompanyID = c.CompanyID
Where c.City = 'Kalamazoo'
Order By p.ProductID;

另外, IN子句是不必要的。 您可以使用JOIN检查城市。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM