首页 > 解决方案 > 数量变化时的折扣礼物更新

问题描述

我有餐桌电话tblInvoice。这是我的一些数据表。

发票号码 项目名 数量 成本价 项目代码 折扣价 异议 数量 总金额 销售价格
INV01 80= 黑色 10 30.00 EX80= 40.00 100.00 400.00 575.00 50.00
INV01 80= 黑色 5 30.00 EX80= 35.00 75.00 175.00 575.00 50.00

我的客户以不同的价格出售相同的商品。如您所见,这里不同DiscountPrice但相同。售后退货时,我想减去数量。没关系,我已经完成了那部分。但问题是我想在退货后更新。就像这样。想象一下,我返回 1 本书是 40.00。不是 35.00。我只想更新第一行。不是两行。我想像这样获得 DiscountPresent。ItemNameItemCodeDiscountPesentDiscountPrice

SalePrice - DiscountPrice * Quantity = DiscountPresent

根据上表。想象一下,我从 DiscountPrice 40.00 行中减去 1 个数量。现在我的数量是 9 我想像这样获得 DiscountPresent。

50 - 40 = 10 * 9 = 90

我使用以下查询来实现这一点。有时它按预期工作。但有时DiscoutPresent与第二行 DiscountPeresent 切换。之后那张桌子是这样的。

发票号码 项目名 数量 成本价 项目代码 折扣价 异议 数量 总金额 销售价格
INV01 80= 黑色 9 30.00 EX80= 40.00 75.00 400.00 575.00 50.00
INV01 80= 黑色 5 30.00 EX80= 35.00 90.00 175.00 575.00 50.00

90 来到第二排。75 来到第一排。这是错的。我使用了以下代码。有时它按预期工作。但有时它会切换DiscountPresent

 UPDATE ps
SET DisPresent = ((i.SalePrice) - (i.DiscountPrice)) * (i.Quantity) 
FROM tblInvoice ps JOIN
     (SELECT i.InvoiceNo, i.DiscountPrice, i.Quantity, i.SalePrice  FROM tblInvoice i
     GROUP BY i.DiscountPrice, i.InvoiceNo, i.Quantity, i.SalePrice)i
     ON ps.InvoiceNo = i.InvoiceNo

标签: sqlssmssql-server-2017sql-server-2017-express

解决方案


if you are returning any product you should update only that invoice

UPDATE ps
SET DisPresent = ((i.SalePrice) - (i.DiscountPrice)) * (i.Quantity) 
FROM tblInvoice where invoiceid=1 and itemcode='EX80='

推荐阅读