如何将特定行保留为查询的第一个结果(T-SQL)?

时间:2012-04-16 14:56:23

标签: sql tsql reportbuilder

我正在编写SQL查询以获取Report Builder 3.0中报表的参数列表。我需要在结果中添加一个值为'All'的额外行,如下所示:

SELECT 'All'
UNION
SELECT DISTINCT    Manager
FROM               IS_Projects

这样可以正常工作,但查询会按字母顺序将行返回给我,其中我实际上希望“全部”始终显示在顶部(即,作为第一行返回)。其余结果可按字母顺序排序。

我已经看到了有关向表中添加排序顺序列的建议,但我对SQL很新,并且不知道如何执行此操作。

感谢您的任何建议!

2 个答案:

答案 0 :(得分:23)

单向;

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

答案 1 :(得分:3)

这是一种方式:

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