MySQL查询减法值
我有一个疑问:MySQL查询减法值,mysql,sql,database,Mysql,Sql,Database,我有一个疑问: SELECT ( SELECT purchase_code FROM qa_suppliers_invoices a WHERE a.supplier_invoice_code = b.item_invoicecodesupplier ) AS purchase_code, item_code, status_code, itempurchase_quantity,
SELECT (
SELECT purchase_code
FROM qa_suppliers_invoices a
WHERE a.supplier_invoice_code = b.item_invoicecodesupplier
) AS purchase_code,
item_code,
status_code,
itempurchase_quantity,
item_costprice
FROM qa_items_purchases b
ORDER BY purchase_code LIMIT 0,20000;
它返回以下数据
我想使用(item_code)行像紫色线一样进行分组,我想添加所有(itempurchase_quantity)参考(status_code)行,然后应用此执行(status_15-status_16)也像图像一样
我想要这个结果,GROUP():
如果项目_代码(1997)不存在状态_代码=15,则返回负数(-9),则无需显示
2 2325 16 50 849.97
注意:
我需要消除所有16个状态码
更新:
这是一张详细说明我需要的图片:
使用这个
SELECT purchase_code, item_code, status_code,
SUM(case status_code
when 15 then itempurchase_quantity
ELSE (-1*itempurchase_quantity) END
) AS itempurchase_quantity
FROM myTable
GROUP BY purchase_code;
注意
您需要使用数据,而不是myTable。我已经用您在图中显示的数据创建了myTable
我想新的问题是
SELECT (
SELECT purchase_code
FROM qa_suppliers_invoices a
WHERE a.supplier_invoice_code = b.item_invoicecodesupplier
) AS purchase_code,
item_code,
status_code,
SUM(case status_code
when 15 then itempurchase_quantity
ELSE (-1*itempurchase_quantity) END
) AS itempurchase_quantity,
item_costprice
FROM qa_items_purchases b
GROUP BY purchase_code
ORDER BY purchase_code
LIMIT 0,20000;
更新1 用这个
SELECT purchase_code, item_code, status_code,
SUM(case status_code
when 15 then itempurchase_quantity
ELSE (-1*itempurchase_quantity) END
) AS itempurchase_quantity
FROM myTable
GROUP BY purchase_code;
注意
您需要使用数据,而不是myTable。我已经用您在图中显示的数据创建了myTable
我想新的问题是
SELECT (
SELECT purchase_code
FROM qa_suppliers_invoices a
WHERE a.supplier_invoice_code = b.item_invoicecodesupplier
) AS purchase_code,
item_code,
status_code,
SUM(case status_code
when 15 then itempurchase_quantity
ELSE (-1*itempurchase_quantity) END
) AS itempurchase_quantity,
item_costprice
FROM qa_items_purchases b
GROUP BY purchase_code
ORDER BY purchase_code
LIMIT 0,20000;
更新1
到目前为止你都试了些什么?给我们看一些代码…只是我试着使用,分组方式(项目代码),但我不知道如何在参考状态代码行时进行加减。一个问题,你的状态代码是15和16吗?好的,让我试试。试试@Elviejo answer,让我知道这是否有效…@JohnNuñez当我对一个项目有多个状态代码时,我如何确定结果的状态代码?你迄今为止都尝试了什么?给我们看一些代码…只是我试着使用,分组方式(项目代码),但我不知道如何在参考状态代码行时进行加减。一个问题,你的状态代码是15和16吗?好的,让我试试。试试@Elviejo answer,让我知道这是否有效…@JohnNuñez当我对一个项目有多个状态代码时,我如何确定结果的状态代码?它是伪代码,而不是神奇的复制粘贴和工作。。让我检查一下anyway@JohnNuñez现在检查一下。我得到的查询中缺少“Then”(状态代码)是一个不明确的错误,我正在尝试更改一些参数。可能是因为您需要设置每个列从哪个表开始。我没有这些信息,请使用别名并完成that@JohnNu尼兹,你确认我的答案了吗?如果将别名(“a”和“b”)添加到每个列,考虑到它们属于哪个表,这应该是workIt的伪代码,而不是神奇的复制粘贴和工作。。让我检查一下anyway@JohnNuñez现在检查一下。我得到的查询中缺少“Then”(状态代码)是一个不明确的错误,我正在尝试更改一些参数。可能是因为您需要设置每个列从哪个表开始。我没有这些信息,请使用别名并完成that@JohnNu尼兹,你确认我的答案了吗?如果您将别名(“a”和“b”)添加到每个列中,考虑到它们属于哪个表,这应该会起作用。我认为这不会起作用,因为group by子句中没有项目代码和状态代码,您在select中显示了这些字段,而不使用聚合函数我感谢您的帮助,让我来attach@FahimParkar,请记住,我们只需要对重复的代码(项目代码)进行分组,请查看采购代码=2仅起作用,因为项目代码与采购代码相同。。但是,如果他想使用另一个采购代码,使用不同的项目代码(你可以在他发布的img中看到),它将不起作用。这就是为什么我认为按每个字段分组更有效的原因safer@JohnNuñez:你能提供代码2的预期输出吗??请使用代码2的预期输出更新您的问题…我认为这将不起作用,因为group by子句中没有项目代码和状态代码,并且您正在select中显示这些字段,而您没有将它们应用到聚合函数中。我感谢您的帮助,让我来看看attach@FahimParkar,请记住,我们只需要对重复的代码(项目代码)进行分组,请查看采购代码=2仅起作用,因为项目代码与采购代码相同。。但是,如果他想使用另一个采购代码,使用不同的项目代码(你可以在他发布的img中看到),它将不起作用。这就是为什么我认为按每个字段分组更有效的原因safer@JohnNuñez:你能提供代码2的预期输出吗??请使用代码2的预期输出更新您的问题。。。
SELECT purchase_code, item_code, status_code,
SUM(case status_code
when 15 then itempurchase_quantity
ELSE (-1*itempurchase_quantity) END
) AS itempurchase_quantity
FROM myTable
GROUP BY purchase_code, item_code;