数量变化时折扣礼物更新
Discount Present Update When Quantity Change
我有 table 呼叫 tblInvoice
。这是我的 table 和一些数据。
InvoiceNo
ItemName
Quantity
CostPrice
ItemCode
DiscountPrice
DisPresent
Amount
GrossAmount
SalePrice
INV01
80= BK
10
30.00
EX80=
40.00
100.00
400.00
575.00
50.00
INV01
80= BK
5
30.00
EX80=
35.00
75.00
175.00
575.00
50.00
我的客户以不同的价格出售相同的商品。如您所见,DiscountPrice
不同,但 ItemName
和 ItemCode
相同。当return件商品售出后我要减去数量。没关系,我已经完成了那部分。但问题是我想在 return 产品之后更新 DiscountPesent
。就像这样。假设我 return 1 本书 DiscountPrice
是 40.00。不是 35.00。我只想更新第一行。不是两行。我想这样获得DiscountPresent
SalePrice - DiscountPrice * Quantity = DiscountPresent
根据上述table。假设我从 DiscountPrice 40.00 行减去 1 Quantity。现在我的数量是 9 我想像这样获得 DiscountPresent。
50 - 40 = 10 * 9 = 90
我使用以下查询来实现此目的。有时它会按预期工作。但有时 DiscoutPresent
切换到第二行 DiscountPeresent。之后 table 看起来像这样。
InvoiceNo
ItemName
Quantity
CostPrice
ItemCode
DiscountPrice
DisPresent
Amount
GrossAmount
SalePrice
INV01
80= BK
9
30.00
EX80=
40.00
75.00
400.00
575.00
50.00
INV01
80= BK
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
在我看来你只需要一个简单的更新语句
UPDATE i
SET DisPresent = (i.SalePrice - i.DiscountPrice) * i.Quantity
FROM tblInvoice i
如果这不是您想要的,请显示您提供的示例数据的预期结果
如果您要退回任何产品,您应该只更新该发票
UPDATE ps
SET DisPresent = ((i.SalePrice) - (i.DiscountPrice)) * (i.Quantity)
FROM tblInvoice where invoiceid=1 and itemcode='EX80='
我有 table 呼叫 tblInvoice
。这是我的 table 和一些数据。
InvoiceNo | ItemName | Quantity | CostPrice | ItemCode | DiscountPrice | DisPresent | Amount | GrossAmount | SalePrice |
---|---|---|---|---|---|---|---|---|---|
INV01 | 80= BK | 10 | 30.00 | EX80= | 40.00 | 100.00 | 400.00 | 575.00 | 50.00 |
INV01 | 80= BK | 5 | 30.00 | EX80= | 35.00 | 75.00 | 175.00 | 575.00 | 50.00 |
我的客户以不同的价格出售相同的商品。如您所见,DiscountPrice
不同,但 ItemName
和 ItemCode
相同。当return件商品售出后我要减去数量。没关系,我已经完成了那部分。但问题是我想在 return 产品之后更新 DiscountPesent
。就像这样。假设我 return 1 本书 DiscountPrice
是 40.00。不是 35.00。我只想更新第一行。不是两行。我想这样获得DiscountPresent
SalePrice - DiscountPrice * Quantity = DiscountPresent
根据上述table。假设我从 DiscountPrice 40.00 行减去 1 Quantity。现在我的数量是 9 我想像这样获得 DiscountPresent。
50 - 40 = 10 * 9 = 90
我使用以下查询来实现此目的。有时它会按预期工作。但有时 DiscoutPresent
切换到第二行 DiscountPeresent。之后 table 看起来像这样。
InvoiceNo | ItemName | Quantity | CostPrice | ItemCode | DiscountPrice | DisPresent | Amount | GrossAmount | SalePrice |
---|---|---|---|---|---|---|---|---|---|
INV01 | 80= BK | 9 | 30.00 | EX80= | 40.00 | 75.00 | 400.00 | 575.00 | 50.00 |
INV01 | 80= BK | 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
在我看来你只需要一个简单的更新语句
UPDATE i
SET DisPresent = (i.SalePrice - i.DiscountPrice) * i.Quantity
FROM tblInvoice i
如果这不是您想要的,请显示您提供的示例数据的预期结果
如果您要退回任何产品,您应该只更新该发票
UPDATE ps
SET DisPresent = ((i.SalePrice) - (i.DiscountPrice)) * (i.Quantity)
FROM tblInvoice where invoiceid=1 and itemcode='EX80='