I'm stuck in a query, due to the return condition of the result.
The CONF4
field would have to separate the results according to the UF (MS, MT), as in the following example:
CONFIG4
MS MT
PRODUTO 1 QTD QTD
PRODUTO 2 QTD QTD
Code:
SELECT
DADOS.ESTAB,
DADOS.DESCSAFRA,
DADOS.SAFRA,
DADOS.REDUZIDO,
DADOS.ITEM,
DADOS.PRODUTO,
DADOS.UNIDADE,
DADOS.CIDPESSOA,
COALESCE(SUM(DADOS.CONF1),0)CONF1,
COALESCE(SUM(DADOS.CONF2),0)CONF2,
COALESCE(SUM(DADOS.CONF3),0)CONF3,
COALESCE(SUM(DADOS.CONF4),0)CONF4
FROM (
SELECT
PEDCAB.ESTAB,
safras.descricao AS DESCSAFRA,
PEDCAB.safra,
FILIAL.reduzido,
FILIAL.razaosoc,
FILIAL.ENDERECO||', Nº '||FILIAL.numeend AS ENDEMPRESA,
FILIAL.bairro,
FILIAL.CEP,
FILIAL.telefone,
CIDFIL.nome||' - '||CIDFIL.uf AS CIDEMPRESA,
/*RETORNA DADOS DA PESSOA PEDIDO*/
CONTAMOV.numerocm,
CONTAMOV.nome PESSOA,
CASE
WHEN PEDCAB.seqendereco > 0 AND CONTAMOV.sexo <> 'J' THEN CONTAMOV.cnpjf
WHEN PEDCAB.seqendereco > 0 AND CONTAMOV.sexo = 'J' THEN ENDERECO.cnpjf
WHEN PEDCAB.seqendereco = 0 OR PEDCAB.seqendereco IS NULL THEN CONTAMOV.cnpjf
END CNPJF,
CASE WHEN PEDCAB.seqendereco > 0 THEN CIDEND.uf ELSE CIDPES.uf END AS CIDPESSOA,
PEDITEM.ITEM,
ITEMAGRO.DESCRICAO PRODUTO,
ITEMAGRO.unidade,
((SELECT COALESCE(SUM(PED.quantidade),0)
FROM PEDITEM PED
INNER JOIN PEDCAB pedcab2 ON
pedcab2.ESTAB = PED.ESTAB AND
pedcab2.SERIE = PED.SERIE AND
pedcab2.NUMERO = PED.NUMERO
WHERE PED.ESTAB = PEDITEM.ESTAB
AND PED.SERIE = PEDITEM.SERIE
AND PED.NUMERO = PEDITEM.NUMERO
AND PED.ITEM = PEDITEM.ITEM
AND pedcab2.pedidoconf = 1
and pedcab2.PEDIDOCONF = pedcab.PEDIDOCONF))
CONF1,
((SELECT COALESCE(SUM(PED.quantidade),0)
FROM PEDITEM PED
INNER JOIN PEDCAB pedcab2 ON
pedcab2.ESTAB = PED.ESTAB AND
pedcab2.SERIE = PED.SERIE AND
pedcab2.NUMERO = PED.NUMERO
WHERE PED.ESTAB = PEDITEM.ESTAB
AND PED.SERIE = PEDITEM.SERIE
AND PED.NUMERO = PEDITEM.NUMERO
AND PED.ITEM = PEDITEM.ITEM
AND pedcab2.pedidoconf = 2
and pedcab2.PEDIDOCONF = pedcab.PEDIDOCONF)) CONF2,
((SELECT COALESCE(SUM(PED.quantidade),0)
FROM PEDITEM PED
INNER JOIN PEDCAB pedcab2 ON
pedcab2.ESTAB = PED.ESTAB AND
pedcab2.SERIE = PED.SERIE AND
pedcab2.NUMERO = PED.NUMERO
WHERE PED.ESTAB = PEDITEM.ESTAB
AND PED.SERIE = PEDITEM.SERIE
AND PED.NUMERO = PEDITEM.NUMERO
AND PED.ITEM = PEDITEM.ITEM
AND pedcab2.pedidoconf = 3
and pedcab2.PEDIDOCONF = pedcab.PEDIDOCONF)) CONF3,
((SELECT COALESCE(SUM(PED.quantidade),0)
FROM PEDITEM PED
INNER JOIN PEDCAB pedcab2 ON
pedcab2.ESTAB = PED.ESTAB AND
pedcab2.SERIE = PED.SERIE AND
pedcab2.NUMERO = PED.NUMERO
WHERE PED.ESTAB = PEDITEM.ESTAB
AND PED.SERIE = PEDITEM.SERIE
AND PED.NUMERO = PEDITEM.NUMERO
AND PED.ITEM = PEDITEM.ITEM
AND pedcab2.pedidoconf = 4
and pedcab2.PEDIDOCONF = pedcab.PEDIDOCONF)) CONF4
FROM PEDCAB
INNER JOIN FILIAL ON
FILIAL.estab = PEDCAB.estab
INNER JOIN CIDADE CIDFIL ON
CIDFIL.CIDADE = FILIAL.cidade
INNER JOIN CONTAMOV ON
CONTAMOV.numerocm = PEDCAB.pessoa
LEFT JOIN ENDERECO ON
ENDERECO.numerocm = PEDCAB.pessoa AND
ENDERECO.seqendereco = PEDCAB.seqendereco
LEFT JOIN CIDADE CIDEND ON
CIDEND.cidade = ENDERECO.cidade
LEFT JOIN CIDADE CIDPES ON
CIDPES.cidade = CONTAMOV.cidade
INNER JOIN PEDITEM ON
PEDITEM.ESTAB = PEDCAB.ESTAB AND
PEDITEM.SERIE = PEDCAB.SERIE AND
PEDITEM.NUMERO = PEDCAB.NUMERO
INNER JOIN ITEMAGRO ON
ITEMAGRO.ITEM = PEDITEM.ITEM
LEFT OUTER JOIN SAFRAS ON
(SAFRAS.SAFRA = PEDCAB.SAFRA)
WHERE PEDCAB.STATUS <>'C'
AND (0 IN (:ESTAB) OR PEDCAB.ESTAB IN (:ESTAB))
AND (0 IN (:SAFRA) OR PEDCAB.SAFRA IN (:SAFRA))
--AND (0 IN (:ITEM) OR PEDITEM.ITEM IN (:ITEM))
--AND CONTAMOV.NUMEROCM = 14
)DADOS
GROUP BY
DADOS.ESTAB,
DADOS.DESCSAFRA,
DADOS.SAFRA,
DADOS.REDUZIDO,
DADOS.CIDPESSOA,
DADOS.ITEM,
DADOS.PRODUTO,
DADOS.UNIDADE
ORDER BY DADOS.PRODUTO