Dúvida no Script

24/05/2012

0

Bom dia a todos.

Estou apanhando para fazer um select, alguém poderia me ajudar?

Isso é permitido no MSSQL?

select EST_DATA_ENTRADA,EST_FK_EPI,EST_CUST_UND
from ESTOQUE
where EST_DATA_ENTRADA, EST_FK_EPI in
(select max(EST_DATA_ENTRADA), EST_FK_EPI from ESTOQUE
group by EST_FK_EPI) order by EST_FK_EPI

Esta ocorrendo o seguinte erro:
Msg 4145, Level 15, State 1, Line 3
An expression of non-boolean type specified in a context where a condition is expected, near ,.

Valeu,

Bruno
Bruno Banfi

Bruno Banfi

Responder

Posts

24/05/2012

Joel Rodrigues

Cara, essa consulta aí realmente não pode ser executada dessa forma. Eu até tava reescrevendo, mas vi que está meio confuso. Qual resultado você precisa? Talvez assim facilite pra te dizer qual a melhor forma de ser feito.
Responder

24/05/2012

Bruno Leandro

tenta desta forma

SELECT A.EST_DATA_ENTRADA,A.EST_FK_EPI,A.EST_CUST_UND
FROM ESTOQUE A
WHERE A.EST_DATA_ENTRADA =(SELECT MAX(X.EST_DATA_ENTRADA) FROM ESTOQUE X WHERE X.EST_FK_EPI = A.EST_FK_EPI)
ORDER BY EST_FK_EPI
Responder

24/05/2012

Bruno Banfi

Joel / Bruno, bom dia.

Gostaria de fazer a seguinte consulta.

select EST_DATA_ENTRADA, EST_FK_EPI, EST_CUST_UND
from ESTOQUE
where EXISTS (select max(EST_DATA_ENTRADA), EST_FK_EPI from ESTOQUE
group by EST_FK_EPI) order by EST_FK_EPI

Resultado:
EST_DATA_ENTRADA EST_FK_EPI EST_CUST_UND
2012-03-28 NULL 23.00
2011-09-28 2 0.65
2012-05-16 2 0.69
2012-05-16 4 1.55
2011-09-30 4 1.55
2012-02-17 4 1.55
2011-09-28 59 3.05
2011-09-30 77 3.05
2012-02-17 77 3.05
2011-10-27 77 3.75

Preciso que o resultado pegue o Valor com a data mais recente:
EST_DATA_ENTRADA EST_FK_EPI EST_CUST_UND
2012-03-28 NULL 23.00
2012-05-16 2 0.69
2012-05-16 4 1.55
2011-09-28 59 3.05
2012-02-17 77 3.05

Poderia me dar um help?

Abraço,
Responder

24/05/2012

Bruno Leandro

Ola xara, tenta assim

SELECT Distinct on ( A.EST_FK_EPI ) A.EST_DATA_ENTRADA,A.EST_FK_EPI,A.EST_CUST_UND
FROM ESTOQUE A
WHERE A.EST_DATA_ENTRADA =(SELECT MAX(X.EST_DATA_ENTRADA) FROM ESTOQUE X WHERE X.EST_FK_EPI = A.EST_FK_EPI)
ORDER BY EST_FK_EPI
Responder

24/05/2012

Bruno Banfi

Bruno,

Valeu pelo retorno.

Ocorre o seguinte erro:

Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword on.

Valeu,

Bruno
Responder

24/05/2012

Bruno Leandro

Ola, pode ser o alias no order, tente assim

SELECT Distinct on ( A.EST_FK_EPI ) A.EST_DATA_ENTRADA,A.EST_FK_EPI,A.EST_CUST_UND
FROM ESTOQUE A
WHERE A.EST_DATA_ENTRADA =(SELECT MAX(X.EST_DATA_ENTRADA) FROM ESTOQUE X WHERE X.EST_FK_EPI = A.EST_FK_EPI)
ORDER BY A.EST_FK_EPI
Responder

24/05/2012

Bruno Banfi

Bruno, fiz dessa maneira e parece que deu certo.

SELECT Distinct A.EST_DATA_ENTRADA,A.EST_FK_EPI,A.EST_CUST_UND
FROM ESTOQUE A
WHERE A.EST_DATA_ENTRADA =
(SELECT MAX(X.EST_DATA_ENTRADA) FROM ESTOQUE X, EPI as H
WHERE X.EST_FK_EPI = A.EST_FK_EPI)
ORDER BY A.EST_FK_EPI

Vou conferir os valores e já dou um feedback.

Valeu,

Bruno
Responder

24/05/2012

Bruno Banfi

Bruno você é o cara...rs

Deu certinho!!

Muito obrigado brother!

Abraços,

Bruno
Responder

24/05/2012

Bruno Leandro

valeu pelos elogios, estamos sempre prontos para ajudar
Responder

24/05/2012

Luiz Vichiatto

O que estava ocorrendo é que em clausulas utilizando IN a busca tem que ser única no contexto
IN (valor1, valor2, ....)
no caso estava passando mais de um campo na consulta que estava no select que estava no IN
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar