Dúvida no Script

SQL Server

24/05/2012

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

Curtidas 1

Respostas

Joel Rodrigues

Joel Rodrigues

24/05/2012

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.
GOSTEI 0
Bruno Leandro

Bruno Leandro

24/05/2012

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
GOSTEI 0
Bruno Banfi

Bruno Banfi

24/05/2012

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,
GOSTEI 0
Bruno Leandro

Bruno Leandro

24/05/2012

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
GOSTEI 0
Bruno Banfi

Bruno Banfi

24/05/2012

Bruno,

Valeu pelo retorno.

Ocorre o seguinte erro:

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

Valeu,

Bruno
GOSTEI 0
Bruno Leandro

Bruno Leandro

24/05/2012

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
GOSTEI 0
Bruno Banfi

Bruno Banfi

24/05/2012

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
GOSTEI 0
Bruno Banfi

Bruno Banfi

24/05/2012

Bruno você é o cara...rs

Deu certinho!!

Muito obrigado brother!

Abraços,

Bruno
GOSTEI 0
Bruno Leandro

Bruno Leandro

24/05/2012

valeu pelos elogios, estamos sempre prontos para ajudar
GOSTEI 0
Luiz Vichiatto

Luiz Vichiatto

24/05/2012

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
GOSTEI 0
POSTAR