Situação: Como identificar produtos com quantidade BLOQUEADA diferente da quantidade de RESERVAS
Solução
--> Select para identificar produtos com quantidade BLOQUEADA diferente da quantidade de RESERVAS
select COMPPROD.CODPROD, PRODUTO.DESCRICAO, COMPPROD.ESTOQUE, COMPPROD.QUANTBLOQUEADA,
(coalesce((select sum(RESERVASI.QUANTIDADE)
from RESERVASI
join RESERVASC on RESERVASC.CODEMPRESA = COMPPROD.CODEMPRESA and RESERVASC.CODRESERVA = RESERVASI.CODRESERVA and RESERVASI.CODPROD = COMPPROD.CODPROD and RESERVASI.CODGRADE = COMPPROD.CODGRADE), 0)) as QUANTRESERVADA
from COMPPROD
join PRODUTO on PRODUTO.CODPROD = COMPPROD.CODPROD
where COMPPROD.QUANTBLOQUEADA <> coalesce((select sum(RESERVASI.QUANTIDADE)
from RESERVASI
join RESERVASC on RESERVASC.CODEMPRESA = COMPPROD.CODEMPRESA and RESERVASC.CODRESERVA = RESERVASI.CODRESERVA and RESERVASI.CODPROD = COMPPROD.CODPROD and RESERVASI.CODGRADE = COMPPROD.CODGRADE),0)
--> Update para correção dos produtos identificados na query acima
update COMPPROD
set COMPPROD.QUANTBLOQUEADA = coalesce((select sum(RESERVASI.QUANTIDADE)
from RESERVASI
join RESERVASC on RESERVASC.CODRESERVA = RESERVASI.CODRESERVA
where RESERVASC.CODEMPRESA = COMPPROD.CODEMPRESA and
RESERVASI.CODPROD = COMPPROD.CODPROD and
RESERVASI.CODGRADE = COMPPROD.CODGRADE), 0)
where COMPPROD.QUANTBLOQUEADA <> coalesce((select sum(RESERVASI.QUANTIDADE)
from RESERVASI
join RESERVASC on RESERVASC.CODRESERVA = RESERVASI.CODRESERVA
where RESERVASC.CODEMPRESA = COMPPROD.CODEMPRESA and
RESERVASI.CODPROD = COMPPROD.CODPROD and
RESERVASI.CODGRADE = COMPPROD.CODGRADE),0)