2012-04-16 34 views
10

Tôi đang viết một truy vấn SQL để nhận danh sách các tham số cho báo cáo trong Trình tạo báo cáo 3.0. Tôi cần thêm một hàng bổ sung có giá trị 'Tất cả' vào kết quả như sau:Làm thế nào để giữ một hàng cụ thể là kết quả đầu tiên của một truy vấn (T-SQL)?

SELECT 'All' 
UNION 
SELECT DISTINCT Manager 
FROM    IS_Projects 

Điều này hoạt động tốt, nhưng truy vấn trả về hàng cho tôi được sắp xếp theo thứ tự chữ cái, nơi tôi thực sự muốn 'Tất cả' để xuất hiện ở trên cùng mọi lúc (tức là trở lại như hàng đầu tiên). Phần còn lại của các kết quả có thể được sắp xếp theo thứ tự bảng chữ cái.

Tôi đã thấy các đề xuất về việc thêm cột sắp xếp thứ tự vào bảng, nhưng tôi khá mới đối với SQL và không biết cách thực hiện việc này.

Cảm ơn mọi đề xuất!

+0

Điều này tồn tại trên chính báo cáo, vì vậy tôi không thực sự điền bảng theo cách này. Cảm ơn những lời khuyên mặc dù! – confusedKid

+0

Ah ... Tôi đã xóa nhận xét của mình khi tôi đọc lại câu hỏi và nhận ra đó là một báo cáo! Cũng thấy những câu trả lời gọn gàng dưới đây, và nhận thấy bình luận của tôi không còn cần thiết nữa ... –

Trả lời

21

Một cách;

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

Cảm ơn bạn, điều này đã làm việc cho tôi. – confusedKid

+0

Tuyệt vời - không biết bạn có thể đặt các câu lệnh case trong mệnh đề ORDER BY. Điều này vừa mở cửa. Nó khá hiệu quả? – crush

+0

Cá nhân tôi sẽ không mong đợi một trường hợp tầm thường như trên để có một hiệu ứng đo lường được. –

3

Đây là một cách:

SELECT Manager 
FROM (SELECT 'All' Manager, 1 Order 
     UNION ALL 
     SELECT DISTINCT Manager, 2 Order 
     FROM IS_Projects) A 
ORDER BY Order, Manager 
Các vấn đề liên quan