2012-01-19 8 views

Respuesta

7

me gustaría probar algo como esto:

DECLARE @myTable TABLE([Fruits] VARCHAR(20)) 
INSERT INTO @myTable VALUES('Apple') 
INSERT INTO @myTable VALUES('Pear') 
INSERT INTO @myTable VALUES('Peach') 
INSERT INTO @myTable VALUES('Plum') 
INSERT INTO @myTable VALUES('Grape') 

SELECT * 
FROM @myTable 
ORDER BY 
    CASE WHEN([Fruits] = 'Grape') THEN 0 ELSE 1 END, 
    [Fruits] 

En el ORDER BY, está asignando un valor cuando el campo [Fruits] es Grape por lo que se puede clasificar en la primera, y luego hacer una clasificación secundaria en el [Fruits] campo.

+0

columnas se llama Fruits. –

+0

Esta solución tiene la ventaja de no requerir un cambio de esquema, pero requiere un mayor rendimiento ya que debe trabajar más para ordenarlos. – cdeszaq

+1

@aF Gracias, actualicé mi respuesta. – rsbarro

2

Agregue una columna ordinal a su tabla de Frutas y dé a las uvas el ordinal más bajo (1) y el resto de la fruta un valor diferente (2 funcionaría bien).

A continuación, puede ordenar por el ordinal, y luego el nombre de la fruta. Eso pondrá las uvas en la parte superior, y luego el resto a continuación en orden alfa.

3
select * from myTable 
order by 
    case when Fruits = 'Grape' then 0 else 1 end, 
    Fruits 
Cuestiones relacionadas