none
USAR WHERE EM UMA COLUNA QUE FOI CRIADA A PARTIR DE UMA CONSULTA. RRS feed

  • Pergunta

  • OLÁ AMIGOS...

    ESTOU TENDO UM PROBLEMINHA EM FILTRAR UM VALOR QUE ESTÁ EM UMA COLUNA CRIADA A PARTIR DE UMA CONSULTA, CONFORME MOSTRA ABAIXO:

    SELECT b.codigo, b.REFERENCIA, b.NOME AS "DESCRIÇÃO", SUM(A.QUANT) as VENDA, D.LOJA AS ESTOQUE, B.PRECO_COMPRA AS "PREÇO COMPRA", 
    B.IPICOMPRA AS IPI, SUM(A.QUANT)-(D.LOJA)+1 AS SUGESTAO,
    ((B.PRECO_COMPRA*B.IPICOMPRA/100+B.PRECO_COMPRA)*(SUM(A.QUANT)-(D.LOJA)+1))AS "TOTAL SUGESTÃO", 
    B.DT_ULTIMACOMPRA AS "ULTIMA COMPRA"
    FROM SAIDA_PRODUTO a
    inner join PRODUTO b
    on a.ID_PRODUTO = b.ID
    inner join saida c
    on a.id_saida = c.id
    INNER JOIN PRODUTO_ESTOQUE D
    ON A.ID_PRODUTO = D.ID_PRODUTO
    INNER JOIN PESSOA E
    ON B.ID_FORNECEDOR = E.ID
    where 
    E.NOME LIKE '%SESTINI%'
    AND C.DATA >= '01.12.2017' AND C.DATA <= '01.04.2018'
    AND C.TIPO IN ('NCE','CF')
    AND B.ELIMINADO = 'N' 
    AND A.CANCELADO = 'N' 
    group by CODIGO, "DESCRIÇÃO" , ESTOQUE, REFERENCIA, B.PRECO_COMPRA, IPI, "ULTIMA COMPRA"
    ORDER BY VENDA DESC

    ###FIM###

    ESTÁ ME RESULTANDO O SEGUINTE:

    PORÉM PRECISO FILTRAR A COLUNA SUGESTÃO PARA QUE SÓ MOSTRE OS VALORES >= 0

    AGRADEÇO SE ALGUÉM PODER ME AJUDAR.

    terça-feira, 4 de setembro de 2018 15:42

Respostas

  • Olá!

       Tente assim, adicionando a cláusula HAVING:

    SELECT b.codigo, 
           b.referencia, 
           b.nome                             AS "DESCRIÇÃO", 
           Sum(A.quant)                       AS VENDA, 
           D.loja                             AS ESTOQUE, 
           B.preco_compra                     AS "PREÇO COMPRA", 
           B.ipicompra                        AS IPI, 
           Sum(A.quant) - ( D.loja ) + 1      AS SUGESTAO, 
           ( ( B.preco_compra * B.ipicompra / 100 + B.preco_compra ) * ( 
             Sum(A.quant) - ( D.loja ) + 1 ) )AS "TOTAL SUGESTÃO", 
           B.dt_ultimacompra                  AS "ULTIMA COMPRA" 
    FROM   saida_produto a 
           INNER JOIN produto b 
                   ON a.id_produto = b.id 
           INNER JOIN saida c 
                   ON a.id_saida = c.id 
           INNER JOIN produto_estoque D 
                   ON A.id_produto = D.id_produto 
           INNER JOIN pessoa E 
                   ON B.id_fornecedor = E.id 
    WHERE  E.nome LIKE '%SESTINI%' 
           AND C.data >= '01.12.2017' 
           AND C.data <= '01.04.2018' 
           AND C.tipo IN ( 'NCE', 'CF' ) 
           AND B.eliminado = 'N' 
           AND A.cancelado = 'N' 
    GROUP  BY codigo, 
              "descrição", 
              estoque, 
              referencia, 
              B.preco_compra, 
              ipi, 
              "ultima compra" 
    HAVING
    	(Sum(A.quant) - ( D.loja ) + 1) >= 0
    ORDER  BY venda DESC 
    Espero que ajude. Bom trabalho!

    terça-feira, 4 de setembro de 2018 16:52

Todas as Respostas

  • ABRÃOHITO HENRIQUE,

        Basta você colocar na cláusula WHERE antes do "group by" a letra referente a tabela na qual se encontra o campo "VALORES" A LINHA ABAIXO.
        Exemplo (NÃO SEI SE ESTÁ NA TABELA DA LETRA "B", mas deve ser pois é a tabela "PRODUTO" ou talvez "D - PRODUTO_ESTOQUE"):

    AND B.VALORES >= 0 

       Vai ficar assim:

    SELECT b.codigo, b.REFERENCIA, b.NOME AS "DESCRIÇÃO", SUM(A.QUANT) as VENDA, D.LOJA AS ESTOQUE, B.PRECO_COMPRA AS "PREÇO COMPRA", 
    B.IPICOMPRA AS IPI, SUM(A.QUANT)-(D.LOJA)+1 AS SUGESTAO,
    ((B.PRECO_COMPRA*B.IPICOMPRA/100+B.PRECO_COMPRA)*(SUM(A.QUANT)-(D.LOJA)+1))AS "TOTAL SUGESTÃO", 
    B.DT_ULTIMACOMPRA AS "ULTIMA COMPRA"
    FROM SAIDA_PRODUTO a
    inner join PRODUTO b
    on a.ID_PRODUTO = b.ID
    inner join saida c
    on a.id_saida = c.id
    INNER JOIN PRODUTO_ESTOQUE D
    ON A.ID_PRODUTO = D.ID_PRODUTO
    INNER JOIN PESSOA E
    ON B.ID_FORNECEDOR = E.ID
    where 
    E.NOME LIKE '%SESTINI%'
    AND C.DATA >= '01.12.2017' AND C.DATA <= '01.04.2018'
    AND C.TIPO IN ('NCE','CF')
    AND B.ELIMINADO = 'N' 
    AND A.CANCELADO = 'N' 
    AND B.VALORES >= 0 
    group by CODIGO, "DESCRIÇÃO" , ESTOQUE, REFERENCIA, B.PRECO_COMPRA, IPI, "ULTIMA COMPRA"
    ORDER BY VENDA DESC


    []'s,
    Fabio I.

    FABIO, BOATARDE.

    A COLUNA SUGESTAO É A SOMA O RESULTADO DE DUAS TABELAS ( SUM(A.QUANT)-(D.LOJA)+1 AS SUGESTAO)

    terça-feira, 4 de setembro de 2018 16:23
  • Olá!

       Tente assim, adicionando a cláusula HAVING:

    SELECT b.codigo, 
           b.referencia, 
           b.nome                             AS "DESCRIÇÃO", 
           Sum(A.quant)                       AS VENDA, 
           D.loja                             AS ESTOQUE, 
           B.preco_compra                     AS "PREÇO COMPRA", 
           B.ipicompra                        AS IPI, 
           Sum(A.quant) - ( D.loja ) + 1      AS SUGESTAO, 
           ( ( B.preco_compra * B.ipicompra / 100 + B.preco_compra ) * ( 
             Sum(A.quant) - ( D.loja ) + 1 ) )AS "TOTAL SUGESTÃO", 
           B.dt_ultimacompra                  AS "ULTIMA COMPRA" 
    FROM   saida_produto a 
           INNER JOIN produto b 
                   ON a.id_produto = b.id 
           INNER JOIN saida c 
                   ON a.id_saida = c.id 
           INNER JOIN produto_estoque D 
                   ON A.id_produto = D.id_produto 
           INNER JOIN pessoa E 
                   ON B.id_fornecedor = E.id 
    WHERE  E.nome LIKE '%SESTINI%' 
           AND C.data >= '01.12.2017' 
           AND C.data <= '01.04.2018' 
           AND C.tipo IN ( 'NCE', 'CF' ) 
           AND B.eliminado = 'N' 
           AND A.cancelado = 'N' 
    GROUP  BY codigo, 
              "descrição", 
              estoque, 
              referencia, 
              B.preco_compra, 
              ipi, 
              "ultima compra" 
    HAVING
    	(Sum(A.quant) - ( D.loja ) + 1) >= 0
    ORDER  BY venda DESC 
    Espero que ajude. Bom trabalho!

    terça-feira, 4 de setembro de 2018 16:52
  • Muito obrigado, deu certo...

    Bom trabalho!

    terça-feira, 4 de setembro de 2018 18:57