2009-11-23 14 views
12

Quiero seleccionar todos los order_ids distintos de mi tabla, y ordenar esa lista por la columna de fecha. Utilizando distintos es por supuesto un parámetro de toda la consulta, por lo que intentar algo como esto no funciona:SQL Select Distinct Values, pero ordene por un valor diferente

SELECT DISTINCT(orderId, datetime) 
FROM table 
ORDER BY datetime DESC 

Esto devuelve todas las combinaciones distintas de la orderId y de fecha y hora, así que me quedo con múltiples OrderIDs, que yo no quiero Por lo tanto, estoy pensando que la cláusula DISTINCT no es el camino a seguir. ¿Alguien tiene alguna sugerencia sobre cómo podría resolver este problema?

Gracias!

Respuesta

21

Si hay varias filas para el pedido, ¿qué fecha desea mostrar? quizá:

SELECT [orderId], MAX([datetime]) 
FROM [table] 
GROUP BY [orderId] 
ORDER BY MAX([datetime]) DESC 
+0

Como seguimiento, ¿qué ocurre si quiero seleccionar todos los valores en la tabla, no solo orderId y datetime? Tengo la sensación de que es una pregunta totalmente independiente, pero ... – Erebus

+0

Debería agregar todas las columnas o seleccionar una fila en particular (min (id), max (id) o similar) y hacer un join/sub -consulta. –

5

Si tiene varios OrderIDs en su mesa (y cada uno tiene diferentes valores de fecha y hora), ¿cuál te quiere elegir? ¿La fecha más reciente, la fecha más antigua o alguna otra cosa?

4

Tal vez un CTE ayudaría:

WITH CTE 
AS 
(

SELECT orderId FROM table ORDER BY datetime DESC 

) 

SELECT DISTINCT orderId FROM CTE 
+0

Es específico de SQL Server, que puede no ser útil ... – gbn

+0

Gracias por la corrección, por un momento olvidé que este no es el foro MSDN SQL :) – unclepaul84

+0

Dice "La cláusula ORDER BY no es válida en vistas, en línea funciones, tablas derivadas, subconsultas y expresiones de tablas comunes, a menos que también se especifique TOP, OFFSET o FOR XML. ". – Atomosk

0
SELECT DISTINCT * FROM 
    (SELECT value1 
    FROM table1 
    ORDER BY value2); 

que trabajó para mí.

+0

¿Podría ampliar con esta es una buena solución? –

Cuestiones relacionadas