ORDER BY with CASE - 多列

时间:2016-04-15 16:40:29

标签: sql sql-server

示例表:

tableId  otherValue
1        4
2        3
3        2
4        1

我根据tableId按特定顺序选择数据 - 当值为1或2时返回,否则返回其他。现在我想基于otherValue添加一个额外的排序参数。

如果使用CASE,只需在ORDER BY WITH TIES之后添加,如下所示,将无法使用。

SELECT TOP 1 WITH TIES tableId, otherValue
FROM exampleTable
ORDER BY (CASE WHEN tableId IN (1, 2) THEN 1 ELSE 2 END), otherValue

有没有比外部查询更好的方法呢?

1 个答案:

答案 0 :(得分:0)

这样的事情怎么样?

select * from exampleTable
where tableID in (1,2) or 
    not exists(select * from exampleTable where tableID in (1,2))
order by othervalue