2014-01-16 40 views
0

我想知道是否有可能有一個查詢返回一個特定的行作爲第一個元素的結果集,然後剩下的,由一個特定行。如何獲得一個特定的行作爲第一個結果,然後結果集的其餘部分

我嘗試這樣做:

declare @testId int 

select @testId = (select TestID from Tests Where FileID='111' AND TestDate='2010-01-01') 

select * from Tests where [email protected] 

union 

select * from Tests where TestId <> @TestId and FileID='111' order by TestDate desc 

這並沒有真正的工作,因爲它輸出定期通過TestDate SELECT命令,降。

任何想法?

謝謝!

編輯:此查詢用於提供.NET數據表。

回答

1

可以在ORDER BY使用CASE

SELECT * 
FROM Tests 
Where FileNumber = '111' 
ORDER BY CASE WHEN AppointmentDT='2010-01-01' THEN 0 ELSE 1 END ASC 
    , AppointmentDT DESC 
+0

我得到這個錯誤:ORDER BY項目必須出現在選擇列表中,如果語句中包含UNION,INTERSECT或EXCEPT運算符。 AFAIK,情況已經如此。 –

+0

@FrancisDucharme:我不明白這個要求了。爲什麼你需要'UNION'呢?我以爲這只是試圖讓它訂購而哪些不起作用,所以你已經回答了這個問題。如果你想使用'UNION'你必須在子查詢中做到這一點,你需要在外部查詢中應用'ORDER BY'。 –

+0

我編輯了問題中的查詢。也許這會有所幫助。如果我不UNION,那麼我會得到第一個SELECT的唯一結果。要求是我得到第一個SELECT(作爲結果集的第一行)的結果,然後是TestDate命令的其餘部分。 –

相關問題