He buscado y encontré esto SQL selecting rows by most recent date Que es lo más parecido a lo que quiero pero parece que no puedo hacer que funcione.
Aparece un error La 'ID' de columna no es válida en la lista de selección porque no está contenida ni en una función de agregado ni en la cláusula GROUP BY.SQL Seleccione los registros más nuevos que tienen una columna Nombre distinto
Quiero la fila más reciente según la fecha para cada nombre distinto
Select ID,Name,Price,Date
From table
Group By Name
Order By Date ASC
Aquí es un ejemplo de lo que quiero
Table
ID| Name | Price | Date
---------------------------------
0 | A | 10 | 2012-05-03
1 | B | 9 | 2012-05-02
2 | A | 8 | 2012-05-04
3 | C | 10 | 2012-05-03
4 | B | 8 | 2012-05-01
resultado deseado
ID| Name | Price | Date
------------------------------
2 | A | 8 | 2012-05-04
3 | C | 10 | 2012-05-03
1 | B | 9 | 2012-05-02
estoy usando Microsoft servidor sql 2008
Gracias por cualquier ayuda o puntos en la dirección correcta
Mientras esto funciona, no puede crear un tie-breaker sin alguna concatenación de campo. Es por eso que normalmente uso una unión interna en su lugar [como esta] (http://sqlfiddle.com/#!3/e7382/7) cuando no estoy usando row_number() –
@ConradFrix de acuerdo, esa fue la segunda versión que tuve voy a publicar, acabo de hacer esto primero. Editaré mi respuesta con la segunda opción también. Gracias por la sugerencia. – Taryn
Fui con la primera parte de esto y funciona perceptivamente. El desempate no será una preocupación ya que en realidad estoy usando un horario, y las posibilidades de que coincidan dos fechas son menores que las posibilidades de ganar la lotería. Aprecio tu ayuda en esto chicos. –