Guest Elienai Postado Abril 22, 2004 Denunciar Share Postado Abril 22, 2004 SELECT TI.CD_PRODUTO, TI.QT_RECEBIDA, TNF.DT_ENTRADA_NFFROM TB_ITEM_NF TI, TB_ENTRADA_NF TNFWHERE TNF.NU_LANCAMENTO = TI.NU_LANCAMENTO ANDTI.CD_PRODUTO = PT.CD_PRODUTO ANDTI.CD_PRODUTO = '00001' ANDTNF.DT_ENTRADA_NF = (SELECT MAX(XF.DT_ENTRADA_NF) FROM TB_ITEM_NF XI, TB_ENTRADA_NF XNFWHERE XI.NU_LANCAMENTO = TI.NU_LANCAMENTO ANDXNF.NU_LANCAMENTO = XI.NU_LANCAMENTO ANDXI.CD_PRODUTO = TI.CD_PRODUTO)OBJETIBO: ENCONTRAR A ULTIMA ENTRADA DE UM PRODUTO(0001) PELA DATA DE ENTRADA DA NOTA(DT_ENTRADA_NF).USEI ESTA SELECT MAS NÃO DEU CERTO, ELA TROUXE TODAS AS ENTRADA DO PRODUTO(0001), OU SEJA, A FUNÇÃO MAX NÃO FUNCIONOU...alguém SABE ONDE TA O ERRO, ME AJUDEM, POR FAVOR!!!! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Corposemalma Postado Abril 22, 2004 Denunciar Share Postado Abril 22, 2004 TNF.DT_ENTRADA_NF = MAX(XF.DT_ENTRADA_NF) Assim não funcionaria? Sem o SELECT( ) ?? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Elienai Postado Abril 22, 2004 Denunciar Share Postado Abril 22, 2004 TNF.DT_ENTRADA_NF = MAX(XF.DT_ENTRADA_NF) Assim não funcionaria? Sem o SELECT( ) ?? Desculpa mas não entendi Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Baiano_Ramone Postado Abril 22, 2004 Denunciar Share Postado Abril 22, 2004 A função max funciona da seguinte forma:Ela serve para trazer o valor máximo de determinada coluna no teu caso DT_ENT_NF (data de entrada da nota fiscal)se você quisesse apenas mostrar a data de maior valor da colunaselect MAX (DT_ENT_NF) from [tabela] where (condição)neste caso você está usando o MAX como uma condição, ou seja...não há necessidade de usar um select dentro de um select o que seria um subselectTI.CD_PRODUTO = '00001' ANDTNF.DT_ENTRADA_NF = (SELECT MAX(XF.DT_ENTRADA_NF) FROM TB_ITEM_NF XI, TB_ENTRADA_NF XNFWHERE XI.NU_LANCAMENTO = TI.NU_LANCAMENTO ANDXNF.NU_LANCAMENTO = XI.NU_LANCAMENTO ANDXI.CD_PRODUTO = TI.CD_PRODUTO)o correto:...whereTI.CD_PRODUTO = '00001' ANDTNF.DT_ENTRADA_NF = MAX(XF.DT_ENTRADA_NF)/ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Elienai Postado Abril 22, 2004 Denunciar Share Postado Abril 22, 2004 A função max funciona da seguinte forma:Ela serve para trazer o valor máximo de determinada coluna no teu caso DT_ENT_NF (data de entrada da nota fiscal)se você quisesse apenas mostrar a data de maior valor da colunaselect MAX (DT_ENT_NF) from [tabela] where (condição)neste caso você está usando o MAX como uma condição, ou seja...não há necessidade de usar um select dentro de um select o que seria um subselectTI.CD_PRODUTO = '00001' ANDTNF.DT_ENTRADA_NF = (SELECT MAX(XF.DT_ENTRADA_NF) FROM TB_ITEM_NF XI, TB_ENTRADA_NF XNFWHERE XI.NU_LANCAMENTO = TI.NU_LANCAMENTO ANDXNF.NU_LANCAMENTO = XI.NU_LANCAMENTO ANDXI.CD_PRODUTO = TI.CD_PRODUTO)o correto:...whereTI.CD_PRODUTO = '00001' ANDTNF.DT_ENTRADA_NF = MAX(XF.DT_ENTRADA_NF)/ deu o seginte erro: group function is not allowed here Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bolomaster Postado Abril 23, 2004 Denunciar Share Postado Abril 23, 2004 Evite duplicar POSTSAbraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Baiano_Ramone Postado Abril 23, 2004 Denunciar Share Postado Abril 23, 2004 Função de grupo não é permitida aqui! hehehe tenta assim cara:SELECT TI.CD_PRODUTO, TI.QT_RECEBIDA, TNF.DT_ENTRADA_NF FROM TB_ITEM_NF TI, TB_ENTRADA_NF TNF WHERE TNF.NU_LANCAMENTO = TI.NU_LANCAMENTO AND TI.CD_PRODUTO = PT.CD_PRODUTO AND TI.CD_PRODUTO = '00001' AND = '00001' AND TNF.DT_ENTRADA_NF = (SELECT MAX(DT_ENTRADA_NF) from (tabela do dado que se quer o MAX) /eu tentei com um exemplo parecido mas mais simples aqui e funcionou:select count(cdpro) from cadpro where cdpro = (select max(cdpro) from cadpro)/COUNT(CDPRO)------------ 11 linha selecionada. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Amauri Marx (amauri@unoescsmo.ed Postado Abril 29, 2004 Denunciar Share Postado Abril 29, 2004 A função max funciona da seguinte forma:Ela serve para trazer o valor máximo de determinada coluna no teu caso DT_ENT_NF (data de entrada da nota fiscal)se você quisesse apenas mostrar a data de maior valor da colunaselect MAX (DT_ENT_NF) from [tabela] where (condição)neste caso você está usando o MAX como uma condição, ou seja...não há necessidade de usar um select dentro de um select o que seria um subselectTI.CD_PRODUTO = '00001' ANDTNF.DT_ENTRADA_NF = (SELECT MAX(XF.DT_ENTRADA_NF) FROM TB_ITEM_NF XI, TB_ENTRADA_NF XNFWHERE XI.NU_LANCAMENTO = TI.NU_LANCAMENTO ANDXNF.NU_LANCAMENTO = XI.NU_LANCAMENTO ANDXI.CD_PRODUTO = TI.CD_PRODUTO)o correto:...whereTI.CD_PRODUTO = '00001' ANDTNF.DT_ENTRADA_NF = MAX(XF.DT_ENTRADA_NF)GROUP BY TI.CD_PRODUTOAgora acredito que funcione... Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest Elienai
SELECT TI.CD_PRODUTO, TI.QT_RECEBIDA, TNF.DT_ENTRADA_NF
FROM TB_ITEM_NF TI, TB_ENTRADA_NF TNF
WHERE TNF.NU_LANCAMENTO = TI.NU_LANCAMENTO AND
TI.CD_PRODUTO = PT.CD_PRODUTO AND
TI.CD_PRODUTO = '00001' AND
TNF.DT_ENTRADA_NF = (SELECT MAX(XF.DT_ENTRADA_NF)
FROM TB_ITEM_NF XI, TB_ENTRADA_NF XNF
WHERE XI.NU_LANCAMENTO = TI.NU_LANCAMENTO AND
XNF.NU_LANCAMENTO = XI.NU_LANCAMENTO AND
XI.CD_PRODUTO = TI.CD_PRODUTO)
OBJETIBO: ENCONTRAR A ULTIMA ENTRADA DE UM PRODUTO(0001) PELA DATA DE ENTRADA DA NOTA(DT_ENTRADA_NF).
USEI ESTA SELECT MAS NÃO DEU CERTO, ELA TROUXE TODAS AS ENTRADA DO PRODUTO(0001), OU SEJA, A FUNÇÃO MAX NÃO FUNCIONOU...
alguém SABE ONDE TA O ERRO, ME AJUDEM, POR FAVOR!!!!
Link para o comentário
Compartilhar em outros sites
7 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.