Array
(
)

Dúvida no Script

Bruno Banfi
   - 24 mai 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

Joel Rodrigues
   - 24 mai 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.

0
|
0

Bruno Leandro
   - 24 mai 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

0
|
0

Bruno Banfi
   - 24 mai 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,

0
|
0

Bruno Leandro
   - 24 mai 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

0
|
0

Bruno Banfi
   - 24 mai 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

0
|
0

Bruno Leandro
   - 24 mai 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

0
|
0

Bruno Banfi
   - 24 mai 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

0
|
0

Bruno Banfi
   - 24 mai 2012

Bruno você é o cara...rs

Deu certinho!!

Muito obrigado brother!

Abraços,

Bruno

0
|
0

Bruno Leandro
   - 24 mai 2012

valeu pelos elogios, estamos sempre prontos para ajudar

0
|
0

Luizaummm
   - 24 mai 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

0
|
0