2017-10-04 50 views
0

我有以下查詢,它會產生以下數據。 所有我想按字母順序顯示用戶列表和First Record應該是All,All。SQL order by in union所有查詢

enter image description here

查詢:

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

這裏大部分人都希望格式化的文本,而不是圖像。 – jarlh

+0

如果您使用此查詢的結果放入下拉列表(例如),那麼最好將「All,All」記錄添加到代碼列表中,而不是嘗試在數據庫中執行此操作。 –

+0

由於在'ABDUL'後''全部'是按字母順序排列的,那麼你需要一個不同的訂單鍵,不是嗎?你能想象你會怎麼做?你需要添加另一列來排序,對吧? –

回答

1

ORDER BY使用CASE表達。

查詢

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

值得指出的是需要將原始SELECT轉換爲內聯視圖。當查詢是select語句的UNION時,我們不能通過名稱來引用列,而無需執行此操作。 – APC

0

執行在子查詢ORDER BY

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 
)