Usuário com melhor resposta
Função MAX

Pergunta
-
Quero obter o ultimo inventário registrado, para isto criei a seguinte consulta:
SELECT MAX(id_EmpregadoIventarioMedico) AS id_EmpregadoIventarioMedico, id_Empregado, MAX(dataPedidoInventario) AS dataPedidoInventario, MAX(dataInventario) AS dataInventario, MAX(dataDeConclusao) AS dataDeConclusao, MAX(notaDeConclusao) AS notaDeConclusao, realizado FROM dbo.Empregado_IventarioMedico GROUP BY realizado, id_Empregado ORDER BY id_Empregado
Apesar de apresentar o resultado esperado, me parece um pouco estranho. Se um dos campos com a função MAX for modificada para GROUP BY, a consulta me mostra todos os registros e não o último inventário de cada empregado.
[b]Sergio Ivanenko[/b]
- Editado Ivanenko terça-feira, 20 de novembro de 2012 02:46
Respostas
-
Cara, apesar de não ter entendido muito bem a sua dúvida, mas posso sugerir uma outra maneira de rankear resultados, experimente usar CTE (http://msdn.microsoft.com/en-us/library/ms190766(v=sql.105).aspx) com o auxílio do ROW_NUMBER (http://msdn.microsoft.com/pt-br/library/ms186734.aspx)
WITH CTE AS ( SELECT * ,'ROWID' = ROW_NUMBER() OVER (PARTITION BY id_EmpregadoIventarioMedico ORDER BY dataPedidoInventario DESC) FROM dbo.Empregado_IventarioMedico ) SELECT * FROM CTE WHERE ROWID = 1 ORDER BY id_Empregado
Abs,
- Marcado como Resposta Ivanenko terça-feira, 20 de novembro de 2012 13:07
Todas as Respostas
-
Cara, apesar de não ter entendido muito bem a sua dúvida, mas posso sugerir uma outra maneira de rankear resultados, experimente usar CTE (http://msdn.microsoft.com/en-us/library/ms190766(v=sql.105).aspx) com o auxílio do ROW_NUMBER (http://msdn.microsoft.com/pt-br/library/ms186734.aspx)
WITH CTE AS ( SELECT * ,'ROWID' = ROW_NUMBER() OVER (PARTITION BY id_EmpregadoIventarioMedico ORDER BY dataPedidoInventario DESC) FROM dbo.Empregado_IventarioMedico ) SELECT * FROM CTE WHERE ROWID = 1 ORDER BY id_Empregado
Abs,
- Marcado como Resposta Ivanenko terça-feira, 20 de novembro de 2012 13:07
-