2012-01-19 15 views

Odpowiedz

7

chciałbym spróbować coś takiego:

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] 

W ORDER BY, jesteś przypisując wartość, gdy pole [Fruits] jest Grape więc można sortować na tym pierwszym, a następnie zrobić drugorzędną rodzaju na [Fruits] pole.

+0

kolumny nazywa się owoce. –

+0

To rozwiązanie ma tę zaletę, że nie wymaga zmiany schematu, ale ma większy współczynnik wydajności, ponieważ trzeba wykonać więcej pracy, aby je posortować. – cdeszaq

+1

@aF Dzięki, zaktualizowałem moją odpowiedź. – rsbarro

2

Dodaj kolumnę porządkową do stołu Owoców i daj Winogronom najniższą liczbę porządkową (1), a resztę owoców inną wartość (2 dobrze by działało).

Następnie można zamówić według liczby porządkowej, a następnie nazwy owocu. To postawi winogrona u góry, a następnie resztę poniżej w kolejności alfabetycznej.

3
select * from myTable 
order by 
    case when Fruits = 'Grape' then 0 else 1 end, 
    Fruits 
Powiązane problemy