0

注文を正しく返すことができなかったSQLがあります。以下は、行とそれらを表示する順序の例です。条件付きのケースとROW_NUMBER OVERPARTIONを使用してORDERBYを試しましたが、成功しませんでした。ColCの長さが3未満の場合にのみ、ColAをプライマリソート、ColBをセカンダリにします。それ以外の場合は、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 に答える