REPLICANDO DADOS
Bom dia! Montei um select para encontrar estoque, totais de vendas por período e se teve devolução o valor que foi devolvido.
Na minha clausula where do select externo estou fazendo as comparações para me apresentar os dados, mas uma dessas comparações gera informações nulas, produtos que não tem devolução, não gera valor de devolução, então não me apresenta, mas preciso da venda desses produtos também. Tentei usar NVL para quando fosse nulo me apresentar 0, mas não obtive sucesso. Caso alguém consiga me ajudar... serei muito grato.
Segue código: *Obs.: se eu usar 'OR' ao invés de 'AND' no where do select externo ele traz todos os dados que eu preciso, o único problema é que ele replica tudo.
Na minha clausula where do select externo estou fazendo as comparações para me apresentar os dados, mas uma dessas comparações gera informações nulas, produtos que não tem devolução, não gera valor de devolução, então não me apresenta, mas preciso da venda desses produtos também. Tentei usar NVL para quando fosse nulo me apresentar 0, mas não obtive sucesso. Caso alguém consiga me ajudar... serei muito grato.
Segue código: *Obs.: se eu usar 'OR' ao invés de 'AND' no where do select externo ele traz todos os dados que eu preciso, o único problema é que ele replica tudo.
SELECT
"VEND_COD_PRO", "VEND_DESC_PRO", "VEND_TOT_VENDA", "VEND_CODVOL", "DEV_TOT_DEVOLUCAO", "EST_ESTOQUE", "VEND_TOT_VENDA" - "DEV_TOT_DEVOLUCAO" AS "TOT_LIQ_VEND"
FROM
(SELECT ITE.CODPROD AS "VEND_COD_PRO", --CÓDIGO DO PRODUTO NA TELA DE ITENS
PRO.DESCRPROD AS "VEND_DESC_PRO", -- DESCRIÇÃO DO PRODUTO NA TABELA DE PRODUTOS
SUM(ITE.QTDNEG) AS "VEND_TOT_VENDA", -- SOMAR QUANTIDADE NEGOCIADA DA TABELA ITENS
PRO.CODVOL AS "VEND_CODVOL" -- CÓDIGO DO VOLUME (UN DE MEDIDA) DA TABELA PRODUTO
FROM TGFITE ITE, TGFPRO PRO, TGFCAB CAB -- ITE TABELA ITEM - PRO TABELA PRODUTO - CAB TABELA CABEÇALHO DE NOTA
WHERE ITE.CODPROD = PRO.CODPROD
AND ITE.NUNOTA = CAB.NUNOTA --NUNOTA - NÚMERO ÚNICO PARA SE IDENTIFICAR UMA NOTA
AND PRO.MARCA IN ('MARCA1', 'MARCA2') -- MARCA DO PRODUTO NA TABELA PRODUTO
AND CAB.TIPMOV = 'V' -- INDICAR QUE A MOVIMENTAÇÃO DESSES PRODUTOS DEVE SER DO TIPO "VENDA"
AND CAB.CODTIPOPER IN (3221, 3216, 3220, 3201, 3218, 3202, 3200, 3214) --"CÓDIGO DE OPERAÇÃO DAS VENDAS QUE DEVEM APARECER"
AND TO_DATE(CAB.DTFATUR, 'DD/MM/YY') >= 'DATAINICIAL' -- DEFINIR PERÍODO
AND TO_DATE(CAB.DTFATUR, 'DD/MM/YY') <= 'DATAFINAL'
GROUP BY
ITE.CODPROD,
PRO.DESCRPROD,
PRO.CODVOL) "VENDA",
(SELECT ITE2.CODPROD AS "DEV_COD_PRO", -- CÓDIGO DO PRODUTO NA TABELA ITEM
SUM(ITE2.QTDNEG) AS "DEV_TOT_DEVOLUCAO" -- SOMA DA QUANTIDADE NEGOCIADA NA TABELA ITEM
FROM TGFITE ITE2, TGFCAB CAB2, TGFPRO PRO2 -- ITE2 TABELA ITENS - CAB2 TABELA CABEÇALHO DE NOTA - PRO2 TABELA PRODUTOS
WHERE ITE2.NUNOTA = CAB2.NUNOTA
AND PRO2.CODPROD = ITE2.CODPROD
AND PRO2.MARCA IN ('MARCA1', 'MARCA2')
AND CAB2.TIPMOV = 'D' -- TIPO DO MOVIMENTO DEVOLUÇÃO DE VENDA
AND TO_DATE(CAB2.DTFATUR, 'DD/MM/YY') >= 'DATAINICIAL' -- DEFINIR PERÍODO
AND TO_DATE(CAB2.DTFATUR, 'DD/MM/YY') <= 'DATAFINAL'
GROUP BY
ITE2.CODPROD) "DEVOLUCAO",
(SELECT PRO.CODPROD AS "EST_COD_PRO", --CÓDIGO DO PRODUTO NA TABELA PRODUTO
SUM(EST.ESTOQUE) AS "EST_ESTOQUE" -- SOMA DO ESTOQUE DA TABELA ESTOQUE
FROM TGFEST EST, TGFPRO PRO -- EST TABELA ESTOQUE - PRO TABELA PRODUTO
WHERE PRO.CODPROD = EST.CODPROD
AND PRO.MARCA IN ('MARCA1', 'MARCA2')
GROUP BY
PRO.CODPROD) "ESTOQUE"
WHERE
ESTOQUE."EST_COD_PRO" = DEVOLUCAO."DEV_COD_PRO" -- COMPARAÇÕES, SE EU UTILIZAR AND AQUI ELE ME APRESENTA SOMENTE OS QUE TEM DEVOLUÇÃO, UTILIZANDO OR ELE ME TRAZ TODOS OS DADOS QUE PRECISO, MAS TODOS REPLICANDO VARIAS VEZES. É AQUI O MEU PROBLEMA
OR ESTOQUE."EST_COD_PRO" = VENDA."VEND_COD_PRO"
ORDER BY
"VEND_DESC_PRO"
Maicon Scapatici
Curtidas 0
Respostas
Alex Lekao
11/10/2018
Oi Maicon,
Eu de novo. rsrsr
Se vc colocar um group by não resolve seu problema?
Atenciosamente,
Eu de novo. rsrsr
Se vc colocar um group by não resolve seu problema?
Atenciosamente,
GOSTEI 0
Maicon Scapatici
11/10/2018
rsrsrsrs.
Você se empenha bastante em ajudar! Por mais pessoas como você.
Então, mesmo colocando group by ele apresenta o mesmo resultado. :/
Você se empenha bastante em ajudar! Por mais pessoas como você.
Então, mesmo colocando group by ele apresenta o mesmo resultado. :/
GOSTEI 0
Alex Lekao
11/10/2018
hahaha
Vc sabe se no Oracle tem algo similar ao outer apply??
Honestamente eu nao faco ideia.
Utilizo muito no SQL Server, me ajuda bastante em analises deste tipo.
Vc sabe se no Oracle tem algo similar ao outer apply??
Honestamente eu nao faco ideia.
Utilizo muito no SQL Server, me ajuda bastante em analises deste tipo.
GOSTEI 0
Maicon Scapatici
11/10/2018
https://oraclepress.wordpress.com/2015/08/17/cross_outer_apply_clause/ parece que sim, nesse link tem explicando sobre, é o mesmo que ocorre no sql server?
GOSTEI 0
Kevlyn Godoy
11/10/2018
Olá Concurseiros
Venha participar do Aniversário do Maior Site de Rateios do Brasil,
O aniversário é do Concurseiros Unidos,
mas o presente quem ganha é você!
Desconto de 30% a 70% em todo o site!
Fale que viu nosso anuncio no forum e ganha desconto adicional
Corre aproveitar antes que termine!
5541991115296
Venha participar do Aniversário do Maior Site de Rateios do Brasil,
O aniversário é do Concurseiros Unidos,
mas o presente quem ganha é você!
Desconto de 30% a 70% em todo o site!
Fale que viu nosso anuncio no forum e ganha desconto adicional
Corre aproveitar antes que termine!
5541991115296
GOSTEI 0