0

我有一个无法正确返回订单的 SQL。下面是行的示例以及我希望它们出现的顺序。我尝试 ORDER BY WITH CONDITIONAL CASE AND ROW_NUMBER OVER PARTION 没有成功。我希望 ColA 成为主要排序,ColB 仅当 ColC 的长度 < 3 时才成为次要排序,否则 ColB 是主要排序,ColA 是次要排序

ColA      ColB      ColC            
5   750 15  
5   750 15  
3   984 13  
3   984 13  
5   1021    15  
5   1021    15  
4   1602    14  
4   1602    14  
4   1823    14  
4   1823    14  
6   4099    16  
6   4099    16  
11  4099    240990  
0   10880   10  
0   10880   10  
3   10881   13  
3   10881   13  
2   11053   12  
8   11053   211053  
6   10891   16  
6   10891   16  
2   11034   12  
10  11034   211034  

ColA      ColB      ColC            
0   10880   10  
0   10880   10  
2   11034   12  
10  11034   211034  
2   11053   12  
8   11053   211053  
3   984 13  
3   984 13  
3   10881   13  
3   10881   13  
4   1602    14  
4   1602    14  
4   1823    14  
4   1823    14  
5   750 15  
5   750 15  
5   1021    15  
5   1021    15  
6   4099    16  
6   4099    16  
11  4099    240990  
6   10891   16  
6   10891   16  
4

1 回答 1

3
order by case when len(ColC) < 3 then ColA else ColB end, 
    case when len(ColC) < 3 then ColB else ColA end

SQL 小提琴示例

于 2012-10-04T14:22:35.803 回答