Query errada...
02/11/2005
0
[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...
[color=red:ef98a3017a]SELECT compra_cod, MAX(compra_data) AS data, MAX(compra_hora) AS hora
FROM compra
GROUP BY compra_cod[/color:ef98a3017a]
...que me retorna [100], [23/10/05] e [[color=red:ef98a3017a]23:30[/color:ef98a3017a]], 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?
[b:ef98a3017a]Tankz... ;-)[/b:ef98a3017a]
[/size:ef98a3017a]
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...
[color=red:ef98a3017a]SELECT compra_cod, MAX(compra_data) AS data, MAX(compra_hora) AS hora
FROM compra
GROUP BY compra_cod[/color:ef98a3017a]
...que me retorna [100], [23/10/05] e [[color=red:ef98a3017a]23:30[/color:ef98a3017a]], 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?
[b:ef98a3017a]Tankz... ;-)[/b:ef98a3017a]
[/size:ef98a3017a]
M.sant
Curtir tópico
+ 0
Responder
Posts
02/11/2005
Robertolucio
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
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
Responder
Clique aqui para fazer login e interagir na Comunidade :)