[英]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.