Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tenho uma tabela que tem um campo de data de inclusao. Preciso fazer uma consulta onde eu traga os registros mais recentes por data sendo apenas 1 por dia: por exemplo:
Id IdCategoriaIdeia IdUsuario Titulo Descricao IdeiaUsada DataInclusao
6 2 5 teste1 awdadawddad N 2012-02-07 15:02:38.000
5 2 4 Teste2 AWDAWDADAWD N 2012-02-07 15:00:41.000
4 4 2 teste3 AWDAWDAWDAWD N 2012-02-06 14:57:21.000
3 4 2 teste4 DFAWDAQEFEFEF N 2012-02-06 14:56:12.000
2 3 1 teste5 wADAWDAWDADW N 2012-02-05 14:50:52.000
1 4 1 teste6 fawfafcasdvcdsavas N 2012-02-05 14:50:21.000
ELE DEVERÁ TRAZER SOMENTE:
Id IdCategoriaIdeia IdUsuario Titulo Descricao IdeiaUsada DataInclusao
6 2 5 teste1 awdadawddad N 2012-02-07 15:02:38.000
4 4 2 teste3 AWDAWDAWDAWD N 2012-02-06 14:57:21.000
2 3 1 teste5 wADAWDAWDADW N 2012-02-05 14:50:52.000
Use o MAX.
1 outra possibilidade:
select *,
date(DataInclusao) as 'dia2'
from tabela group by dia2 order by dia2 desc;
Pessoal já tentei os dois e não funciona.
foi mal.. rss. isso é p/ my sql..
no sql server tente datepart()
veja exemplos aqui:
http://www.devmedia.com.br/post-1946-Funcoes-de-data-no-SQL-Server.html
Continuo sem uma solução. Alguém pode me ajudar?
O ideia que eu dei no post #3 não deu certo ?
Como ficou seu select ?
Boa Tarde Motta,
Cara não funcionou ele esta fazendo a mesma coisa ta trazendo todo o resultado.
A query que eu adaptei ficou assim mas não esta trazendo os caras que eu preciso
SELECT a.Id, IdCategoriaIdeia, IdUsuario, Titulo, Descricao, IdeiaUsada, a.DataInclusao
FROM Ideia a INNER JOIN
(
SELECT b.Id as Id, MAX(b.DataInclusao) as DataInclusao
FROM Ideia b
GROUP BY b.Id,b.DataInclusao
) UltimodoDia
ON a.Id = Ultimododia.Id
-------------------------------------
Eu preciso ter o ultimo registro de cada dia
SELECT a.Id, IdCategoriaIdeia, IdUsuario, Titulo, Descricao, IdeiaUsada, a.DataInclusao
FROM Ideia a
where a.DataInclusao = (SELECT MAX(b.DataInclusao)
FROM Ideia b
WHERE b.Id = a.ID
AND b.IdUsuario = a.IdUsuario)
**Verifique se o join do sub-select é este mesmo (Id e idUsuario).**Desta forma vai resolver.
SELECT Id, IdCategoriaIdeia, IdUsuario, Titulo, Descricao, IdeiaUsada, DataInclusao
FROM Tabela INNER JOIN
(
SELECT MAX(ID), MAX(Data)
FROM Tabela
GROUP BY CAST(CONVERT(VARCHAR, DataInclusao, 101) AS DATETIME)
) UltimodoDia
ON Tabela.Id = Ultimododia.ID
Tente assim.
SELECT Id, IdCategoriaIdeia, IdUsuario, Titulo, Descricao, IdeiaUsada, DataInclusao
FROM Tabela INNER JOIN
(