Array
(
)

Query errada...

M.sant
   - 02 nov 2005

[size=11:ef98a3017a]Colegas,
Não tenho muita experiência com SQL e estou encontrando dificuldades para solucionar um problema.
Tenho uma tabela de compras onde preciso selecionar os seguintes campos - [compra_cod], [compra_data] e [compra_hora], onde para cada código, tenha a maior hora da maior data. Ex:
cod - data - hora
100 - 22/10/05 - 23:30
100 - 23/10/05 - 01:30
100 - 23/10/05 - 02:30
O resultado deverá ser respectivamente [100], [23/10/05] e [02:30].

O que ocorre é que estou tentando utilizar a seguinte query...
SELECT compra_cod, MAX(compra_data) AS data, MAX(compra_hora) AS hora
FROM compra
GROUP BY compra_cod
...que me retorna [100], [23/10/05] e [23:30], ou seja, a maior hora da tabela e não a maior hora da maior data.

Alguém poderia dar um help com esta query ou apresentar alguma outra idéia?

Tankz... ;-)
[/size:ef98a3017a]

Robertolucio
   - 02 nov 2005

Oha, faz bastante tempo que não eu não ´vejo´ SQL SERVER.

Com certeza existem muitas formas ( e muito melhores do que essa ) de resolver esse teu problema.

SELECT top 1 compra.compra_cod, MAX(compra.compra_data) AS data, hora
FROM compra
inner join (select compra_cod, compra_data, max(compra_hora) as hora
from compra
group by compra_cod, compra_data) as teste
on (teste.compra_cod = compra.compra_cod)
GROUP BY compra.compra_cod, hora

Não pude testar, pois como eu disse, ha muito tempo não estou trabalhando com o SQL SERVER.

Qualquer dúvida, se eu puder ajudar, estou a disposição.

Att,

Roberto Lucio