2012-04-16 19 views
10

Piszę zapytanie SQL, aby uzyskać listę parametrów raportu w programie Report Builder 3.0. Musiałem dodać dodatkowy wiersz z wartością „All” do wyników tak:Jak zachować określony wiersz jako pierwszy wynik zapytania (T-SQL)?

SELECT 'All' 
UNION 
SELECT DISTINCT Manager 
FROM    IS_Projects 

Działa to dobrze, ale kwerenda zwraca wierszy mi sortowane w kolejności alfabetycznej, gdzie faktycznie ma „Wszystkie” pojawiać się zawsze u góry (tzn. wracać jako pierwszy wiersz). Pozostałe wyniki można sortować alfabetycznie.

Widziałem sugestie dotyczące dodawania kolumny sortowania do tabeli, ale jestem całkiem nowy w SQL i nie wiem jak to zrobić.

Dzięki za wszelkie sugestie!

+0

To żyje na samym raporcie, więc nie zasypiam stołu w ten sposób. Dzięki za wskazówki! – confusedKid

+0

Ah ... Usunąłem swój komentarz, kiedy ponownie przeczytałem pytanie i zdałem sobie sprawę, że to był raport! Też zobaczyłem schludne odpowiedzi poniżej i zorientowałem się, że mój komentarz nie był już potrzebny ... –

Odpowiedz

21

Jednym ze sposobów;

SELECT Name FROM (
    SELECT 'All'  as Name 
    UNION 
    SELECT DISTINCT Manager 
    FROM    IS_Projects 
) T 
ORDER BY CASE Name WHEN 'All' THEN 0 ELSE 1 END, Name 
+0

Dziękuję, to działało dla mnie. – confusedKid

+0

Awesome - nie wiedziałem, że można umieścić oświadczenia o przypadkach w klauzuli ORDER BY. To właśnie otworzyło drzwi. Czy jest dość wydajny? – crush

+0

Osobiście nie spodziewałbym się, że tak trywialny przypadek, jak powyższy, przyniesie wymierny efekt. –

3

Jest to jeden sposób:

SELECT Manager 
FROM (SELECT 'All' Manager, 1 Order 
     UNION ALL 
     SELECT DISTINCT Manager, 2 Order 
     FROM IS_Projects) A 
ORDER BY Order, Manager 
Powiązane problemy