Bind condition to a result in SQL

0

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                                  
    
asked by anonymous 14.12.2018 / 13:49

0 answers