Usuário com melhor resposta
Pegar data mais recente

Pergunta
-
Galera tenho a seguinte query:
select Cha.IdChat,Cli.Nome as 'Nome Cliente',Cha.mensagem as Mensagem,Cha.dataHora as Data,Cha.status_2,Cli.IdCliente,Func.IdFuncionario from tblChat Cha inner join tblCliente Cli on Cha.IdCliente = Cli.IdCliente left join tblFuncionario Func on Func.IdFuncionario = Cha.IdFuncionario where Cha.status_2 = 0
Nela eu tenho um retorno de várias linhas com várias datas porém para cada código que eu tenho só realmente me interessa ter as informações da data mais recente. Alguém poderia me ajudar com alguma possível forma de fazer isso?
Sei que tem que agrupar com o Group By, porém nunca fiz.
Att,
Gabriel Coutinho
Respostas
-
Boa tarde,
Gabriel, você quer obter a linha mais recente de cada cliente?
Experimente fazer uns testes dessa forma:
with CTE_RN as ( select IdChat, mensagem, dataHora, status_2, IdCliente, IdFuncionario, ROW_NUMBER() OVER(PARTITION BY IdCliente ORDER BY dataHora DESC) as RN from tblChat where status_2 = 0 ) select Crn.IdChat, Cli.Nome as 'Nome Cliente', Crn.mensagem as Mensagem, Crn.dataHora as Data, Crn.status_2, Crn.IdCliente, Crn.IdFuncionario from CTE_RN as Crn inner join tblCliente Cli on Cli.IdCliente = Crn.IdCliente -- left join tblFuncionario Func on Func.IdFuncionario = Crn.IdFuncionario where Crn.RN = 1
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Gabriel Coutinho Ferraz quarta-feira, 18 de maio de 2016 20:24
Todas as Respostas
-
Partindo do princípio que o campo dataHora é do tipo datetime:
SELECT Cha.idchat, Cli.nome AS 'Nome Cliente', Cha.mensagem AS Mensagem, Cha.datahora AS Data, Cha.status_2, Cli.idcliente, Func.idfuncionario FROM tblchat Cha INNER JOIN tblcliente Cli ON Cha.idcliente = Cli.idcliente LEFT JOIN tblfuncionario Func ON Func.idfuncionario = Cha.idfuncionario WHERE Cha.status_2 = 0 GROUP BY Cha.idchat, Cli.nome AS 'Nome Cliente', Cha.mensagem AS mensagem, Cha.datahora AS data, Cha.status_2, Cli.idcliente, Func.idfuncionario ORDER BY Cha.datahora DESC
Da data mais recente para a mais antiga.
Abs.
- Marcado como Resposta Gabriel Coutinho Ferraz quarta-feira, 18 de maio de 2016 20:24
- Não Marcado como Resposta Gabriel Coutinho Ferraz quarta-feira, 18 de maio de 2016 23:56
-
Boa tarde,
Gabriel, você quer obter a linha mais recente de cada cliente?
Experimente fazer uns testes dessa forma:
with CTE_RN as ( select IdChat, mensagem, dataHora, status_2, IdCliente, IdFuncionario, ROW_NUMBER() OVER(PARTITION BY IdCliente ORDER BY dataHora DESC) as RN from tblChat where status_2 = 0 ) select Crn.IdChat, Cli.Nome as 'Nome Cliente', Crn.mensagem as Mensagem, Crn.dataHora as Data, Crn.status_2, Crn.IdCliente, Crn.IdFuncionario from CTE_RN as Crn inner join tblCliente Cli on Cli.IdCliente = Crn.IdCliente -- left join tblFuncionario Func on Func.IdFuncionario = Crn.IdFuncionario where Crn.RN = 1
Espero que ajude
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Gabriel Coutinho Ferraz quarta-feira, 18 de maio de 2016 20:24
-
-