-
Total de itens
3 -
Registro em
-
Última visita
Posts postados por Jedais
-
-
Boa tarde,
Preciso executar uma consulta buscando campos da tabela de notas fiscais (tabela N), bem como as ocorrências (tabela O) e transportadora (tabela T) associadas a ela.
Como uma nota fiscal pode conter mais de uma ocorrência (Tabela N - Tabela O : 1-N) quero retornar somente a última ocorrência associada, ou seja, a que contém maior ID (O.IDOCORRENCIA).
Alguém consegue me ajudar? Segue consulta abaixo:
SELECT DISTINCT
(N.IDNOTA) AS ID_NF,
CONVERT (VARCHAR,N.DTEMISSAO,103) AS DT_EMISSAO,
(T.DSAPELIDOTRANSPORTADORA) AS TRANSPORTADORA,
(O.IDOCORRENCIA) AS ID_OCORRENCIA,
(TPO.DSTIPOOCORRENCIA) AS OCORRENCIA,
FROM GKOSCF.FMNOTA N
LEFT JOIN GKOSCF.FMOCORRE O ON N.IDNOTA = O.IDMOVIMENTO
LEFT JOIN GKOSCF.FCTRANSP T ON N.IDTRANSPORTADORA = T.IDTRANSPORTADORA
LEFT JOIN GKOSCF.FCTPOOCO TPO ON O.IDTIPOOCORRENCIA = TPO.IDTIPOOCORRENCIA
WHERE N.DTEMISSAO > '01/01/2017'
AND N.CDSERIE = '3'O resultado retornado atualmente é:
Obrigado
-
Boa tarde,
Gostaria de uma ajuda para otimizar a query abaixo. O resultado é de 9000 linhas em =~8/9 min. Obrigado.
SELECT DISTINCT (N.IDNOTA) AS ID_NOTA_FISCAL,(N.CDNOTA) AS NO_NOTA_FISCAL,(C.CDPARCEIROCOMERCIAL) AS COD_COMPANHIA,(C.NMPARCEIROCOMERCIAL) AS NOME_COMPANHIA,(T.CDTRANSPORTADORA) AS COD_TRANSP,(T.DSAPELIDOTRANSPORTADORA) AS NOME_TRANSP,CONVERT (VARCHAR,N.DTEMBARQUE,103) AS DATA_EMBARQUE,(RR.DSREFERENCIA) AS ROMANEIO_TIPO_VIAGEM,(EQ.CDEQUIPAMENTO) AS COD_EQUIPAMENTO,(D.CDPARCEIROCOMERCIAL) AS COD_DESTINATARIO,(D.NMPARCEIROCOMERCIAL) AS NOME_DESTINATARIO,(CID.NMCIDADE) AS CID_DESTINO,(UF.CDUF) AS UF_DESTINO,(R.CDROMANEIO) AS ROMANEIO,ROUND (SUM(I.VRNTAITEM),2)/ROUND(COUNT(DISTINCT I.IDITEM),2) AS VR_NOTA_FISCAL,ROUND (SUM(LNP.VRFRETERATEIOPREVISTO),2)/ROUND (COUNT(DISTINCT I.IDITEM),2) AS VR_FR_PREVISTO,ROUND (SUM(I.QTPESOBRUTO),2)/ROUND (COUNT(DISTINCT I.IDITEM),2) AS QT_PESO_BRUTO,ROUND (SUM(I.QTVOLUME),2)/ROUND (COUNT(DISTINCT I.IDITEM),2) AS QT_VOLUMES,(RN.DSREFERENCIA) AS CANAL_VENDAS,(E.DSEVENTO) AS EVENTO,(N.DSLOTE) AS LOTE,ROUND (SUM(LNP.VRFRETERATEIOCOBRADO),2)/ROUND (COUNT(DISTINCT I.IDITEM),2) AS VR_FR_COBRADO,ROUND (SUM(LNP.VRAPAGARCOBRADO),2)/ROUND (COUNT(DISTINCT I.IDITEM),2) AS VR_FR_A_PAGAR_COBRADO,(TN.CDTIPONOTA) AS COD_TIPO_NOTA,(TN.DSTIPONOTA) AS DESC_TIPO_NOTA,(UFR.DSUFREGIAO) AS REGIAO_UF,CASE N.TPFRETE WHEN 1 THEN 'CIF' WHEN 2 THEN 'FOB' END AS TIPO_FRETEFROM GKOSCF.FMNOTA AS N LEFT JOIN GKOSCF.FCTRANSP AS T ON N.IDTRANSPORTADORA = T.IDTRANSPORTADORALEFT JOIN GKOSCF.FCPARCOM AS C ON N.IDPAREMITENTE = C.IDPARCEIROCOMERCIALLEFT JOIN GKOSCF.FCPARCOM AS D ON N.IDPARDESTREMET = D.IDPARCEIROCOMERCIALLEFT JOIN GKOSCF.FRCONNTA AS RLN ON N.IDNOTA = RLN.IDNOTALEFT JOIN GKOSCF.FMCONHEC AS L ON RLN.IDCONHECIMENTO = L.IDCONHECIMENTOLEFT JOIN GKOSCF.FCCIDADE AS CID ON L.IDCIDDESTINO = CID.IDCIDADELEFT JOIN GKOSCF.FCUF AS UF ON CID.IDUF = UF.IDUFLEFT JOIN GKOSCF.FCEVENTO AS E ON L.IDEVENTOPRINCIPAL = E.IDEVENTOLEFT JOIN GKOSCF.FRCONOCO AS RLO ON L.IDCONHECIMENTO = RLO.IDCONHECIMENTOLEFT JOIN GKOSCF.FMOCORRE AS O ON RLO.IDOCORRENCIA = O.IDOCORRENCIALEFT JOIN GKOSCF.FCTPOOCO AS TPO ON TPO.IDTIPOOCORRENCIA = O.IDTIPOOCORRENCIALEFT JOIN GKOSCF.FMCONRAT AS LNP ON N.IDNOTA = LNP.IDNOTALEFT JOIN GKOSCF.FCUFREG AS UFR ON UF.IDUFREGIAO = UFR.IDUFREGIAOLEFT JOIN GKOSCF.FMROMANE AS R ON N.IDROMANEIO = R.IDROMANEIOLEFT JOIN GKOSCF.FCEQUIPA AS EQ ON R.IDEQUIPAMENTO = EQ.IDEQUIPAMENTOLEFT JOIN GKOSCF.FMNTAITM AS I ON N.IDNOTA = I.IDNOTALEFT JOIN GKOSCF.FCTPNOTA AS TN ON N.IDTIPONOTA = TN.IDTIPONOTALEFT JOIN GKOSCF.FMREFER AS RN ON N.IDNOTA = RN.IDMOVIMENTOLEFT JOIN GKOSCF.FMREFER AS RR ON R.IDROMANEIO = RR.IDMOVIMENTOWHERE L.IDEVENTOPRINCIPAL = '1' ANDL.DTEMBARQUE BETWEEN '1/1/2015' AND '2/1/2015'GROUP BY N.IDNOTA, N.CDNOTA, C.CDPARCEIROCOMERCIAL, C.NMPARCEIROCOMERCIAL, T.CDTRANSPORTADORA,T.DSAPELIDOTRANSPORTADORA, N.DTEMBARQUE, RR.DSREFERENCIA, RN.DSREFERENCIA, EQ.CDEQUIPAMENTO,D.CDPARCEIROCOMERCIAL, D.NMPARCEIROCOMERCIAL, CID.NMCIDADE, UF.CDUF, R.CDROMANEIO,N.VRPESOBRUTO, N.QTVOLUME, E.DSEVENTO, N.DSLOTE, TN.CDTIPONOTA, TN.DSTIPONOTA, UFR.DSUFREGIAO, N.TPFRETEORDER BY N.CDNOTA ASC
Último Registro
em SQL Server
Postado
Boa tarde Andreia,
Agradeço pela ajuda, porém, com este código a consulta retorna apenas a última nota fiscal da base de dados, quando deveria retornar apenas a última ocorrência associada a cada nota fiscal.
Obrigado