如何将特定行作为第一个结果,然后是结果集的其余部分

时间:2014-01-16 15:38:46

标签: sql sql-server-2008 tsql

我想知道是否有可能返回一个结果集的查询,该结果集将特定行作为第一个元素返回,然后其余部分按特定行排序。

我试过了:

declare @testId int

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

select * from Tests where TestId=@TestId

union

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

这不起作用,因为它输出由TestDate排序的常规SELECT,降序。

有什么想法吗?

谢谢!

编辑:此查询用于提供.NET DataTable。

1 个答案:

答案 0 :(得分: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