【发布时间】:2018-12-26 16:00:38
【问题描述】:
我有两张表 Product 和 OrderItem,如屏幕截图所示。
我想创建一个存储过程来更新Product 表的TotalSale 列,其中包含从该特定产品的所有销售中收集的金额。
要填充TotalSale 列,我必须通过将UnitPrice 和Quantity 列相乘,从OrderItem 逐行多次计算同一产品的总金额,然后再次添加这些多个总金额每个产品以获得每个产品的总销售额。我是初学者,无法弄清楚。
我在OrderItem添加了一个专栏:
ALTER TABLE OrderItem
ADD TotalSale DECIMAL NULL
UPDATE dbo.OrderItem
SET TotalSale = UnitPrice * Quantity
然后我计算了每个产品的多个总金额的总和,以获得每个产品的总销售额:
SELECT
SUM(TotalSale) AS Gross
FROM
OrderItem
GROUP BY
ProductId
现在,作为初学者,我无法弄清楚如何使用计算出的总值填充该列。任何提示或帮助将不胜感激!
【问题讨论】:
-
请提供相关表格的结构。另外,请提供一个简单的示例,插入您需要的数据和预期的结果。
-
您似乎忘记包含该屏幕截图,但是,请不要。在提供表的详细信息时,将其作为 DDL 语句提供。如果您要提供数据,请为这些表(您为其提供 DDL 语句的表)提供 DML 语句。数据图像对您寻求帮助的人没有帮助;使您的问题获得答案的可能性大大降低。还请务必包含您尝试创建所需 SP 的完整 SQL 语句,并解释它为什么不起作用。谢谢。
-
我一直在编写插入语句:插入 Product TotalSale ( select sum(UnitPrice*Quantity) from OrderItem group by ProductId) 不知道怎么写。我知道我想做什么,但怎么做是我卡住的地方。
-
“如何使用计算的 totl 值填充该列”将计算结果存储在 SQL 表中通常违反所有规范化“规则”。因此可以创建一个 VIEW(您计算的地方)并查询该视图相反.. 或使用 CTE (WITH ... AS...) 查询
标签: sql sql-server