Usuário com melhor resposta
Dúvida com Select não Resolvido

Pergunta
-
Olá Amigos,
No post http://social.msdn.microsoft.com/Forums/en-US/520/thread/55df8eb0-fef1-4cc7-8bef-addb7d0f998c obtive ajuda para realizar um select, mas após fazer alguns testes, verifiquei que o resultado que realmente preciso não consegui obter. Eu tenho abaixo os seguintes registros em uma tabela:
O que eu preciso é retornar o registro mais recente de cada Usuário que esteja relacionado com o usuario 4 - Pedro. O resultado deverá ser algo como abaixo:
Ou seja, para cada usuario relacionado com o Pedro deve resultar o registro mais recente, estando o Pedro no ID_From ou no ID_TO.
Tentei de inumeras formas, utilizando union com CTE, mas não obtive corretamente o resultado esperado.
Agradeço desde já.
Cristiano
Respostas
-
Bom dia,
Experimente dessa forma:
with CTE_R as ( select *, ROW_NUMBER() OVER (PARTITION BY case when ID_From = 4 then ID_To else ID_From end ORDER BY MsgTime DESC) as RowNum from Tabela where ID_From = 4 or ID_To = 4 ) select * from CTE_R where RowNum = 1
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Cristiano Testai quinta-feira, 18 de abril de 2013 15:20
Todas as Respostas
-
Bom dia,
Experimente dessa forma:
with CTE_R as ( select *, ROW_NUMBER() OVER (PARTITION BY case when ID_From = 4 then ID_To else ID_From end ORDER BY MsgTime DESC) as RowNum from Tabela where ID_From = 4 or ID_To = 4 ) select * from CTE_R where RowNum = 1
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
- Marcado como Resposta Cristiano Testai quinta-feira, 18 de abril de 2013 15:20
-
Bom dia,
Experimente dessa forma:
with CTE_R as ( select *, ROW_NUMBER() OVER (PARTITION BY case when ID_From = 4 then ID_To else ID_From end ORDER BY MsgTime DESC) as RowNum from Tabela where ID_From = 4 or ID_To = 4 ) select * from CTE_R where RowNum = 1
Espero que ajude.
Assinatura: http://www.imoveisemexposicao.com.br
Obrigado Gapimex! Pelos testes que fiz aqui era isso que eu precisava.. não conhecia bem o Row_Number() OVER (Partition by)...