Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Claudenes Almeida

Consulta por data mais recente tendo apenas 1 por dia

Recommended Posts

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tente assim.

 

SELECT Id, IdCategoriaIdeia, IdUsuario, Titulo, Descricao, IdeiaUsada, DataInclusao

FROM Tabela INNER JOIN

(

SELECT ID, MAX(DataInclusao) [DataInclusao]

FROM Tabela

GROUP BY CAST(CONVERT(VARCHAR, DataInclusao, 101) AS DATETIME)

) UltimodoDia

ON Tabela.Id = Ultimododia.ID

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 outra possibilidade:

 

select *,
date(DataInclusao) as 'dia2'
from tabela group by dia2 order by dia2 desc;

Compartilhar este post


Link para o post
Compartilhar em outros sites

O ideia que eu dei no post #3 não deu certo ?

 

Como ficou seu select ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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).

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.