sql - 数量变化时的折扣礼物更新
问题描述
我有餐桌电话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。ItemName
ItemCode
DiscountPesent
DiscountPrice
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
解决方案
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='
推荐阅读
- typescript - 在 typescript 中使用 jest 模拟工厂
- javascript - 从模块导出迭代器以允许迭代星号导入
- python - IEX 适用于密钥,但不适用于测试密钥
- java - 不删除布尔 remove(object o) 方法中的最后一项
- arduino - Arduino - 通过串行发送大量数据
- python - 在外部列表中获取带有“”的嵌套列表
- grid - 谷歌材料布局网格覆盖自己?
- css - 如何使用带有组合数字/字母标识符的子列表在 HTML/CSS 中制作有序列表?
- python - 如何在带有 Kivy 的 Python 中使用按钮(下拉)文本作为变量?
- google-apps-script - 如何使用 onEdit 触发器在使用 vlookup 的动态单元格中生成时间戳?