- Este tópico contém 2 respostas, 3 vozes e foi atualizado pela última vez 10 anos, 2 meses atrás por rman.
-
AutorPosts
-
29 de agosto de 2014 às 9:14 pm #106905RamoneParticipante
Boa tarde galera,
estou fazendo um select para trazer a maior nota do estab 4 e cada estab tem 3 series ou seja para teria que retornar 3 linhas isso eu consegui…o problema eh que preciso adicionar a data de emissao dessas notas e quando adiciono no select e no group ele retorna muitas linhas como se ele trouxesse o max da nota por dia.
Eu só preciso adicionar a data de emissao ao select para retornar as 3 linhas com as datas dela.
Alguem pode me ajudar segue o Script e a coluna que quero adicionar comentada:SELECT NFE.ID_EMPRESA,
EMP.NM_FANTASIA,
NFE.NR_SERIE,
SUBSTR(NFE.NR_CNPJ,9,4)NR_CNPJ,
MAX(NFE.NR_DOCUMENTO_FISCAL) NR_DOCUMENTO_FISCAL
— NFE.DT_EMISSAO
—
FROM NFE_NF NFE,
CTRL_EMPRESA EMP
—
WHERE NFE.ID_EMPRESA = EMP.ID_EMPRESA
and SUBSTR(NFE.NR_CNPJ,9,4)= ‘0004’—
GROUP BY NFE.ID_EMPRESA,
EMP.NM_FANTASIA,
NFE.NR_SERIE,
SUBSTR(NFE.NR_CNPJ,9,4)
— NFE.DT_EMISSAO29 de agosto de 2014 às 9:38 pm #106906Raphael FernandesParticipanteCaro Ramone.
Se ao agrupar por NFE.DT_EMISSAO, está trazendo mais linhas que o esperado, significa que existem diferentes datas relacionadas aquela projeção. O que vc pode fazer é usar uma função de agrupamento (MAX ou MIN por exemplo) e não agrupar (GROUP BY) pela data, porém isso poderia trazer uma informação de data que não corresponde ao número da nota.
Uma forma fácil para não quebrar essa relação do maior número da nota com a dt_emissao correspondente é usando uma subquery. Tenta algo assim:
SELECT NFE_SUB.ID_EMPRESA,
EMP.NM_FANTASIA,
NFE_SUB.NR_SERIE,
NFE_SUB.NR_CNPJ,
NFE_SUB.NR_DOCUMENTO_FISCAL,NFE_SUB.DT_EMISSAO
FROM CTRL_EMPRESA EMP
(SELECT NFE.ID_EMPRESA,
NFE.NR_SERIE,
SUBSTR(NFE.NR_CNPJ,9,4) as NR_CNPJ,
MAX(NFE.NR_DOCUMENTO_FISCAL) as NR_DOCUMENTO_FISCAL,
NFE.DT_EMISSAO
—
FROM NFE_NF NFE
—
WHERE SUBSTR(NFE.NR_CNPJ,9,4)= ‘0004’
—
GROUP BY NFE.ID_EMPRESA,
NFE.NR_SERIE,
SUBSTR(NFE.NR_CNPJ,9,4),NFE.DT_EMISSAO) NFE_SUB
WHERE EMP.ID_EMPRESA = NFE_SUB.ID_EMPRESA;
29 de agosto de 2014 às 9:40 pm #106907rmanParticipante@Ramone
Creio que seja assim:
SELECT NFE.ID_EMPRESA
,EMP.NM_FANTASIA
,NFE.NR_SERIE
,SUBSTR(NFE.NR_CNPJ,9,4) NR_CNPJ
,NFE.NR_DOCUMENTO_FISCAL
,NFE.DT_EMISSAO
FROM NFE_NF NFE
,CTRL_EMPRESA EMP
WHERE NFE.ID_EMPRESA = EMP.ID_EMPRESA
AND (NFE.ID_EMPRESA, NFE.NR_SERIE, SUBSTR(NFE.NR_CNPJ,9,4), NFE.NR_DOCUMENTO_FISCAL) IN (
SELECT ID_EMPRESA
,NR_SERIE
,SUBSTR(NR_CNPJ,9,4) NR_CNPJ
,MAX(NR_DOCUMENTO_FISCAL) NR_DOCUMENTO_FISCAL
FROM NFE_NF
WHERE SUBSTR(NR_CNPJ,9,4) = '0004'
GROUP BY ID_EMPRESA,NR_SERIE,SUBSTR(NR_CNPJ,9,4))
-
AutorPosts
- Você deve fazer login para responder a este tópico.