gpt4 book ai didi

MySQL - 'seeing' 其他行

转载 作者:行者123 更新时间:2023-11-30 21:24:07 26 4
gpt4 key购买 nike

我有一个生成如下订单列表的查询:

Invoice   Description       Qty    Amount    VAT       VAT code
3761 Flyers -1 -100 0 Z
3761 Business Cards -1 -75 -11.25 S
3761 Business Cards -1 -75 -11.25 S
3761 Discount(10%) -1 25 0 Z
3761 Delivery -1 -27 -4.05 S

基本上增值税列是数量 * 金额 * 0.15,如果增值税代码是“S”(我使用 IF 语句执行此操作),否则为 0。

除了该发票编号有一个折扣行(在本例中,发票 3761 有一个折扣行)之外,这适用于订单。当有折扣行时,我需要以不同的方式计算增值税 (((Qty * (Amount - 10%)) * 0.15)。

这甚至可以在 MySQL 中“查看”是否有普通发票编号的折扣行并相应地更改其他行的增值税字段?如果是这样,我应该使用什么函数,我可以将它与 IF 语句结合起来生成两个增值税计算公式吗?


补充一下我的问题——折扣金额并不总是 10%。它存储在描述字符串中(通常是“折扣 (5%)”或“在线折扣 (10%)”)。在我的 SELECT 中,我使用它来将它更改为一个名为“DiscountPercent”的数值字段:

IF(ol.Type = 'DISCOUNT', REPLACE(REPLACE(REPLACE(ol.Description, '%)', ''), 'Discount (', ''), 'Online ', ''), NULL) AS DiscountPercent, 

现在让我们开始吧:

WHEN 1 THEN Qty * Amount * 0.9 * 0.15

并修改它以扣除百分比而不是像 0.9 这样的数字:

WHEN 1 THEN (Qty * Amount * (1 - 1 / DiscountPercent)) * 0.15

我需要知道的是如何使用此行正确访问“DiscountPercent”字段。我收到错误“‘字段列表’中的未知列‘DiscountPercent’”,因为它不是我表中的实际字段,而是结果中的字段。

最佳答案

SELECT  i.*,
Qty * Amount * 0.15 *
COALESCE(
(
SELECT 1 - CAST(SUBSTRING(SUBSTRING_INDEX(description, '%)', 1), POSITION('(' IN description) + 1) AS DECIMAL) * 0.01
FROM invoice ii
WHERE ii.invoice = i.invoice
AND ii.description RLIKE 'discount[^(]*\\([0-9]+\\%\\)'
LIMIT 1
), 1) AS vat
FROM invoice i

关于MySQL - 'seeing' 其他行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1124635/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com