取决于列值的条件 ORDER BY

Cra*_*aig 4 sql t-sql sql-server sql-order-by sql-server-2008

我需要编写一个执行此操作的查询:

SELECT TOP 1 
FROM a list of tables (Joins, etc)
ORDER BY Column X, Column Y, Column Z
Run Code Online (Sandbox Code Playgroud)

如果ColumnXNOT NULL,那么此刻我会重新选择,使用略有不同的ORDER BY.

所以,我做同样的查询,两次。如果第一个NULL在某个列中有 a ,我会从我的过程中返回该行。但是,如果值不是NULL- 我必须做另一个相同的选择,除了按不同的一两列排序。

我现在要做的是第一次将其选入临时表。然后检查列的值。如果没问题,则返回临时表,否则,重做选择并返回该结果集。

更多细节:

用英语,我问数据库的问题:

返回我某些出庭的所有结果(通过索引外键)。我预计大约有 1000 行。按出现日期(列,未编入索引,可为空)排序,最后出现在最前面。检查“importId”。如果前 1 行的导入 ID 不为 NULL,那么我们需要运行相同的查询 - 但这次,按导入 ID(最后一个在前)排序,并返回该行。否则,只需返回原始查询的前 1 行。

Chr*_*ell 5

我会说最好的方法是在单个查询中使用一个CASE语句......

SELECT TOP 1 FROM ... ORDER BY 
    (CASE WHEN column1 IS NULL THEN column2 ELSE column1 END) 
Run Code Online (Sandbox Code Playgroud)