使用不同的where子句和各行减去同一列的值

时间:2017-03-21 15:33:37

标签: mysql sql

我需要帮助,我在这里看到了类似的问题,但没有人帮我解决这个问题。

我想减去同一列的值,但是使用不同的where子句但是有不同的行,如下所示:

我想减去这个值,所以输出需要像这样:

表格中的第1条

Product    |  Qty_totally| Name     
PRODUCT A     10           HORGE
PRODUCT B     20           OMINION
PRODUCT C     30           LIKT

表格第2条

Product    |  Qty_totally| Name     
PRODUCT A     25           HORGE
PRODUCT B     50           OMINION
PRODUCT C     70           LIKT

带有最终查询的表

Product    |  Qty_totally| Name     
PRODUCT A     -15     HORGE
PRODUCT B     -30         OMINION
PRODUCT C     -40   LIKT

请帮帮我!!!! 我试过这个:

select descrição as 'Produto', sum(Quantidade_Total) as 'Quantidade_Entrada',Controle_armazem.Fornecedor as 'Fornecedor Controle Armazem' from Controle_armazem join produtos on controle_armazem.Modelo = produtos.idProdutos where Controle_armazem.Ativo = 1 and nota_fiscal is not null and nota_fiscal <> '' and defeito = 'Beneficiamento' AND situação = 'Beneficiado - Disponível para uso' GROUP BY descrição,Controle_armazem.fornecedor

Select descrição AS 'Produto', sum(Quantidade_Total) 'Quantidade Enviada', beneficiamento.Fornecedor as 'Fornecedor' From BeneficiamentoJoin controle_armazem On idPalete = palete join produtos on controle_armazem.Modelo = produtos.idProdutos WHERE Controle_armazem.Ativo = 1 And Beneficiamento.Ativo = 'A' GROUP BY descrição,Beneficiamento.fornecedor

我不知道如何减去“Quantidade_Total”列的值。

1 个答案:

答案 0 :(得分:1)

您只需加入两个查询。由于查询#1中的产品可能不在查询#2的结果中,反之亦然,因此您需要MySQL不提供的完全外连接。那么最好的方法是从products表和外部联接中选择两个查询。

select
  q1.product,
  coalesce(q1.qty_totally, 0) - coalesce(q2.qty_totally, 0) as qty_totally,
  q1.name as name1,
  q2.name as name2
from produtos p
left join (query #1 here) q1 on q1.product = p.descrição
left join (query #2 here) q2 on q2.product = p.descrição
where q1.product is not null or q2.product is not null;