Consulta três tabelas

28/11/2018

0

Oi Pessoal,
Tudo bem?

Estou tentando fazer uma consulta de faturamento (R$) e cotação (R$) por período(mês/ano).
Porem o valor do faturamento bateu e o valor da cotação não.
Preciso da informação tipo (EMPRESA | FATURAMENTO | COTAÇÃO | PERIODO)

Alguém pode me ajudar?

Obrigado.
Vinícius Nogueira

Vinícius Nogueira

Responder

Posts

28/11/2018

Vinícius Nogueira

No banco tenho três tabelas.
Uma tabela é referente a notas emitidas pela empresa (Venda/devolução).
Outra tabela tenho as notas de terceiros, necessária por existir devoluções emitidas por terceiros.

Fiz um UNION ALL entre as duas para ter o faturamento - devoluções.

Dentro deste UNION ALL preciso colocar a consulta da outra tabela, das cotações.

Fiz um Left Join / Join / FULL OUTER JOIN / INNER, com o select que fiz das cotações e validei os valores estão batendo.
Porem quando faço a união com o select do faturamento, os valores da cotação não batem, somente o faturamento.
Responder

29/11/2018

Ricardo Pestana

bom dia,

Posta seu sql por favor....
Responder

29/11/2018

Ricardo Araujo

Poderia adicione o SQL, assim vamos verificar o que esta acontecendo que o valor não esta batendo.

Responder

30/11/2018

Vinícius Nogueira

bom dia,

Posta seu sql por favor....


/*CONSULTA DAS NOTAS EMITIDAS PELA EMPRESA*/
SELECT
CODI_EMP, FANT_EMP,
CODI_TRA,
FANT_TRA,
CODI_PSV,
DESC_PSV,
SUM(QUANTIDADE) AS QUANTIDADE,
ROUND(SUM(VALOR_TOTAL),2) AS VALOR_TOTAL,
SUM(QTD_ORC),
SUM(VLR_ORC),
MES || '/' || ANO AS MES_ANO
FROM(
SELECT
NF.CODI_EMP,
EMP.FANT_EMP,
NF.CODI_TRA,
TRA.FANT_TRA,
INF.CODI_PSV,
PSV.DESC_PSV,
EXTRACT (MONTH FROM NF.DEMI_NOT) AS MES,
EXTRACT (YEAR FROM NF.DEMI_NOT) AS ANO,
SUM (CASE WHEN FT.FUNC_TOP = 'A' THEN INF.QTDE_INO ELSE (INF.QTDE_INO * -1) END) AS QUANTIDADE,
SUM (CASE WHEN FT.FUNC_TOP = 'A' THEN INF.QTDE_INO *INF.VLIQ_INO ELSE ((INF.QTDE_INO *INF.VLIQ_INO) * -1) END) AS VALOR_TOTAL,
SUM(ORC.QUANTIDADE) AS QTD_ORC,
SUM(ORC.VALOR_TOTAL) AS VLR_ORC
FROM INOTA INF
INNER JOIN NOTA NF ON (NF.NPRE_NOT = INF.NPRE_NOT)
INNER JOIN FUNCAOTOPER FT ON (FT.CODI_TOP = NF.CODI_TOP AND FT.CODI_PTO = 102)
LEFT JOIN CADEMP EMP ON (NF.CODI_EMP = EMP.CODI_EMP)
LEFT JOIN TRANSAC TRA ON (NF.CODI_TRA = TRA.CODI_TRA)
LEFT JOIN PRODSERV PSV ON (INF.CODI_PSV = PSV.CODI_PSV)
/*CONSULTA DAS COTAÇÕES*/
LEFT JOIN (SELECT
ORC.CODI_EMP ,
ORC.CODI_TRA ,
IOR.CODI_PSV ,
SUM(IOR.QTDE_IOR) AS QUANTIDADE,
SUM(IOR.QTDE_IOR * IOR.VLOR_IOR) AS VALOR_TOTAL,
EXTRACT (MONTH FROM ORC.DEMI_ORC) AS MES,
EXTRACT (YEAR FROM ORC.DEMI_ORC) AS ANO

FROM ORCAMENT ORC
LEFT JOIN IORCAMEN IOR ON (ORC.CODI_EMP = IOR.CODI_EMP AND ORC.ORCA_ORC = IOR.ORCA_ORC)

WHERE ORC.CODI_EMP IN (14) AND ORC.DEMI_ORC BETWEEN '01-10-2018' AND '31-10-2018'
GROUP BY ORC.CODI_EMP, ORC.CODI_TRA, IOR.CODI_PSV, EXTRACT (MONTH FROM ORC.DEMI_ORC), EXTRACT (YEAR FROM ORC.DEMI_ORC)
) ORC ON
(NF.CODI_EMP = ORC.CODI_EMP AND NF.CODI_TRA = ORC.CODI_TRA AND INF.CODI_PSV = ORC.CODI_PSV AND EXTRACT (MONTH FROM NF.DEMI_NOT) = ORC.MES AND EXTRACT (YEAR FROM NF.DEMI_NOT) = ORC.ANO)
/* INCLUÍ ESTE PARÂMETRO PARA EVITAR DUPLICIDADE DE REGISTROS NOS RELATÓRIOS */
WHERE (NF.SITU_NOT = '5')
AND (NF.DEMI_NOT BETWEEN '01/10/2018' AND '31/10/2018') AND (NF.CODI_EMP IN (14))
GROUP BY NF.CODI_EMP,
EXTRACT (MONTH FROM NF.DEMI_NOT),
EXTRACT (YEAR FROM NF.DEMI_NOT),
EMP.FANT_EMP,
NF.CODI_TRA,
TRA.FANT_TRA,
INF.CODI_PSV,
PSV.DESC_PSV

UNION ALL

/*CONSULTA DAS NOTAS EMITIDAS POR TERCEIROS*/
SELECT
NF.CODI_EMP,
EMP.FANT_EMP,
NF.CODI_TRA,
TRA.FANT_TRA,
INF.CODI_PSV,
PSV.DESC_PSV,
EXTRACT (MONTH FROM NF.DREC_NFE) AS MES,
EXTRACT (YEAR FROM NF.DREC_NFE) AS ANO,
SUM (CASE WHEN FT.FUNC_TOP = 'A' THEN INF.QUAN_INF ELSE (INF.QUAN_INF * -1) END) AS QUANTIDADE,
SUM (CASE WHEN FT.FUNC_TOP = 'A' THEN INF.QUAN_INF *INF.VLIQ_INF ELSE ((INF.QUAN_INF *INF.VLIQ_INF) * -1) END) AS VALOR_TOTAL,
SUM(ORC.QUANTIDADE) AS QTD_ORC,
SUM(ORC.VALOR_TOTAL) AS VLR_ORC
FROM INFENTRA INF
INNER JOIN NFENTRA NF ON (NF.CODI_EMP = INF.CODI_EMP and NF.CODI_TRA = INF.CODI_TRA and
NF.NUME_NFE = INF.NUME_NFE and NF.SERI_NFE = INF.SERI_NFE)
INNER JOIN FUNCAOTOPER FT ON (FT.CODI_TOP = NF.CODI_TOP AND FT.CODI_PTO = 102)
LEFT JOIN CADEMP EMP ON (NF.CODI_EMP = EMP.CODI_EMP)
LEFT JOIN TRANSAC TRA ON (NF.CODI_TRA = TRA.CODI_TRA)
LEFT JOIN PRODSERV PSV ON (INF.CODI_PSV = PSV.CODI_PSV)
/*CONSULTA DAS COTAÇÕES*/
LEFT JOIN (SELECT
ORC.CODI_EMP ,
ORC.CODI_TRA ,
IOR.CODI_PSV ,
SUM(IOR.QTDE_IOR) AS QUANTIDADE,
SUM(IOR.QTDE_IOR * IOR.VLOR_IOR) AS VALOR_TOTAL,
EXTRACT (MONTH FROM ORC.DEMI_ORC) AS MES,
EXTRACT (YEAR FROM ORC.DEMI_ORC) AS ANO

FROM ORCAMENT ORC
LEFT JOIN IORCAMEN IOR ON (ORC.CODI_EMP = IOR.CODI_EMP AND ORC.ORCA_ORC = IOR.ORCA_ORC)

WHERE ORC.CODI_EMP IN (14) AND ORC.DEMI_ORC BETWEEN '01-10-2018' AND '31-10-2018'
GROUP BY ORC.CODI_EMP, ORC.CODI_TRA, IOR.CODI_PSV, EXTRACT (MONTH FROM ORC.DEMI_ORC), EXTRACT (YEAR FROM ORC.DEMI_ORC)
) ORC ON
(NF.CODI_EMP = ORC.CODI_EMP AND NF.CODI_TRA = ORC.CODI_TRA AND INF.CODI_PSV = ORC.CODI_PSV AND EXTRACT (MONTH FROM NF.DREC_NFE) = ORC.MES AND EXTRACT (YEAR FROM NF.DREC_NFE) = ORC.ANO)
/* INCLUÍ ESTE PARÂMETRO PARA EVITAR DUPLICIDADE DE REGISTROS NOS RELATÓRIOS */
WHERE (NF.DREC_NFE BETWEEN '01/10/2018' AND '31/10/2018') AND (NF.CODI_EMP IN (14))
GROUP BY NF.CODI_EMP,
EXTRACT (MONTH FROM NF.DREC_NFE),
EXTRACT (YEAR FROM NF.DREC_NFE),
EMP.FANT_EMP,
NF.CODI_TRA,
TRA.FANT_TRA,
INF.CODI_PSV,
PSV.DESC_PSV)
GROUP BY CODI_EMP, FANT_EMP, CODI_TRA, FANT_TRA, CODI_PSV, DESC_PSV, MES, ANO;
Responder

30/11/2018

Emerson Nascimento

você faz cotações (orçamentos) tanto para notas de entrada quanto para notas de saída? é isto mesmo?
porque aparentemente o relacionamento entre as tabelas nota x orcament e nfentra x orcament podem trazer orçamentos repetidos...
Responder

03/12/2018

Vinícius Nogueira

você faz cotações (orçamentos) tanto para notas de entrada quanto para notas de saída? é isto mesmo?
porque aparentemente o relacionamento entre as tabelas nota x orcament e nfentra x orcament podem trazer orçamentos repetidos...


Não, somente para algumas saídas. Não são para todos os clientes que são feitas as cotações(orçamentos).
Só acrescentei a tabela das notas de entrada devido as notas de devoluções emitidas por alguns clientes.
Por isso preciso subtrair no faturado.
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar