我有选择代码:
select
produto_licitacoes.descricao,
case when produto_unidades.unidade_id = 15 then produto_unidades.saldo else 0 end saldo,
case when produto_unidades.unidade_id = 15 then produto_unidades.qtd - produto_unidades.saldo else 0 end demanda,
case when produto_unidades.unidade_id = 3 then produto_unidades.saldo else 0 end caf,
produto_notas.lote,
produto_notas.dataValidade,
'S' as tipo
from
produto_unidades
join produto_notas on produto_notas.id = produto_unidades.produtoNota_id
join produto_licitacoes on produto_licitacoes.id = produto_notas.produtoLicitacoes_id
join classe_terapeuticas on classe_terapeuticas.id = produto_licitacoes.classeTerapeutica_id
where
(produto_unidades.unidade_id = 3 or produto_unidades.unidade_id = 15)
and produto_licitacoes.tipoProdutos_id = 1
and produto_unidades.saldo > 0
这将返回结果:
'CIMETIDINA 200MG, COMPRIMIDO', '0', '0', '590', '17F35I', '2019-05-30', 'S'
'CIMETIDINA 200MG, COMPRIMIDO', '400', '0', '0', '17F051', '2019-05-30', 'S'
第一行是produto_unidades.unidade_id = 3
,第二行是produto_unidades.unidade_id = 15
。
如何加入这两行?
'CIMETIDINA 200MG, COMPRIMIDO', '400', '0', '590', '17F35I', '2019-05-30', 'S'
答案 0 :(得分:2)
一种解决方案是将查询转换为汇总查询,并使用条件汇总与MAX
来计算变量字段。这需要添加一个GROUP BY
子句,其中列出了所有非聚合字段:
select
produto_licitacoes.descricao,
max(case when produto_unidades.unidade_id = 15 then produto_unidades.saldo else 0 end) saldo,
max(case when produto_unidades.unidade_id = 15 then produto_unidades.qtd - produto_unidades.saldo else 0 end) demanda,
max(case when produto_unidades.unidade_id = 3 then produto_unidades.saldo else 0 end caf),
produto_notas.lote,
produto_notas.dataValidade,
'S' as tipo
from
produto_unidades
join produto_notas on produto_notas.id = produto_unidades.produtoNota_id
join produto_licitacoes on produto_licitacoes.id = produto_notas.produtoLicitacoes_id and and produto_licitacoes.tipoProdutos_id = 1
join classe_terapeuticas on classe_terapeuticas.id = produto_licitacoes.classeTerapeutica_id
where
produto_unidades.unidade_id in (3, 15)
and produto_unidades.saldo > 0
group by
produto_licitacoes.descricao,
produto_notas.lote,
produto_notas.dataValidade
对原始查询的其他更改:
OR
上的unidade_id
条件可以表示为IN
条件WHERE
的{{1}}子句移到了ON
子句