Tengo que sacar unos resultados ordenados de la base de datos (sql server ) y estoy aquí pensando que le he dado vueltas de más al problema y que hay una forma más fácil de resolverlo, así que a ver si alguien lo haría distinto. Me invento el "espacio" del problema así que perdonad la falta de imaginación:
Tengo una tabla con pedidos y otra con una especie de histórico de cambios sobre dichos pedidos (cambios como por ejemplo preparar el pedido, cancelarlo, enviarlo, etc).
Lo que quiero es sacar el histórico ordenado por el cambio más reciente, pero agrupado por el pedido, para poder ver el último cambio pero manteniendo "la localidad del pedido", por ejemplo:
Pedido 37 - enviado - 10pm
Pedido 37 - recibido - 9pm
Pedido 25 - preparado - 9.30pm
Pedido 25 - recibido - 8pm
Y para sacar esto lo que hago es meterle una CTE con una agregación por group by en la que ordeno por fecha, luego le asigno pesos (básicamente el row number de la CTE) y eso con un join lo uso como filtro para la ordenación. Algo así
De qué otras formas se podría hacer? No puedo evitar tener la sensación de que estoy olvidándome de algo y que esto en realidad es una query de dos líneas xd
Si la idea de pedidos/histórco es algo liosa, a grandes rasgos se reduce ordenar primero por fecha y luego por un ID no único, pero mantener los IDs no únicos juntitos respetando esa ordenación inicial por fecha