2012-04-16 44 views
10

我正在編寫一個SQL查詢以獲取Report Builder 3.0中報表的參數列表。我需要與價值「所有」的結果像這樣添加一個額外的行:如何保持特定的行作爲查詢的第一個結果(T-SQL)?

SELECT 'All' 
UNION 
SELECT DISTINCT Manager 
FROM    IS_Projects 

這工作得很好,但查詢返回的行給我按字母順序排列,在這裏我真的想「全部」分類在任何時候都出現在頂部(即回到第一排)。其餘結果可以按字母順序排序。

我已經看到了添加排序順序列於表意見,但我很新的SQL,不知道如何做到這一點。

感謝您的任何建議!

+0

這生活在報告本身,所以我實際上並沒有這樣填充表格。感謝您的提示,但! – confusedKid 2012-04-16 15:10:27

+0

啊......我重新閱讀了這個問題,並且意識到這是一份報告,我刪除了我的評論!也看到下面的整潔的答案,並認爲我的評論不再是必要的... – 2012-04-16 20:53:46

回答

21

一種方式;

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

謝謝,這對我有用。 – confusedKid 2012-04-16 15:09:23

+0

太棒了 - 不知道你可以在ORDER BY子句中放入case語句。這只是打開了門。它相當高效嗎? – crush 2016-05-10 02:52:44

+0

就我個人而言,我不會指望像上面這樣的微不足道的情況會產生可衡量的效果。 – 2016-05-10 10:38:04

3

這是一種方法:

SELECT Manager 
FROM (SELECT 'All' Manager, 1 Order 
     UNION ALL 
     SELECT DISTINCT Manager, 2 Order 
     FROM IS_Projects) A 
ORDER BY Order, Manager 
相關問題