2017-10-04 2 views
0

Ich habe folgende Abfrage, die folgende Daten produziert unten. Alles, was ich Liste der Benutzer in alphabetischer Reihenfolge und First Record anzeigen möchte, sollte All, All sein. SQL-Reihenfolge von in Union alle Abfrage

enter image description here

Abfrage:

SELECT 'All' created_by, 
     'All' Prepby 
FROM dual 
UNION ALL 
SELECT DISTINCT 
     to_char(d.created_by) AS created_by, 
     get_user_name(d.created_by) Prepby 
FROM Hpml_Gp_dtl d 
WHERE d.created_by IS NOT NULL 
ORDER BY 2; 
+0

hier die meisten Menschen formatierten Text wollen, keine Bilder. – jarlh

+0

Wenn Sie das Ergebnis dieser Abfrage zum Einfügen in eine Dropdown-Liste verwenden (z. B.), sollten Sie den Eintrag "Alle, alle" der Liste im Code hinzufügen, anstatt es in der Datenbank zu versuchen. –

+0

Da 'All' alphabetisch nach' ABDUL' steht, brauchst du einen anderen Bestellschlüssel, oder? Kannst du dir vorstellen, wie du das machen würdest? Sie müssten eine weitere Spalte hinzufügen, um nach zu sortieren, oder? –

Antwort

1

eine CASE Expression in ORDER BY Gebrauch.

Abfrage

select t.* from (
    select 'All' created_by, 'All' Prepby 
    from dual 
    union all 
    select distinct to_char(d.created_by) as created_by, 
    get_user_name(d.created_by) Prepby 
    from Hpml_Gp_dtl d 
    where d.created_by is not null 
) t 
order by case Prepby when 'All' then 1 else 2 end, Prepby; 
+0

Es ist erwähnenswert, dass das ursprüngliche SELECT in eine Inline-Ansicht umgewandelt werden muss. Wenn es sich bei der Abfrage um eine UNION von SELECT-Anweisungen handelt, können wir Spalte nicht nach Namen referenzieren, ohne dies zu tun. – APC

0

Führen Sie die ORDER BY in einer Unterabfrage:

SELECT 'All' AS created_by, 
     'All' AS Prepby 
FROM DUAL 
UNION ALL 
SELECT * 
FROM (
    SELECT DISTINCT 
     to_char(created_by), 
     get_user_name(created_by) 
    FROM Hpml_Gp_dtl 
    WHERE created_by IS NOT null 
    ORDER BY 2 
)