根据不同的列值排序行

时间:2016-07-30 17:24:36

标签: sql sql-server sql-order-by

我在表格中有以下格式的数据。

CustomerID | CustomerName | DisplayOrder | isActive
1 | Test | 1 | 1 
1 | Test | 2 | 1 
2 | Test2 | 1 | 1 
1 | Test | 3 | 1 
2 | Test2 | 2 | 1

上表需要根据每个客户的displayorder列进行排序。每个客户都有自己的显示顺序。在这里,我不能直接使用OrderBy Clause,因为显示顺序将按照客户重复。

预期输出为:

CustomerID | CustomerName | DisplayOrder | isActive
1 | Test | 1 | 1 
1 | Test | 2 | 1 
1 | Test | 3 | 1 
2 | Test2 | 1 | 1 
2 | Test2 | 2 | 1  

请按顺序帮助按客户排序。

2 个答案:

答案 0 :(得分:4)

您只需按customerId排序,然后显示订单(如果客户ID相同),如:

SELECT * 
FROM mytable 
ORDER BY customerId, displayOrder;

Fiddle也是如此。

答案 1 :(得分:3)

SELECT *
FROM t
ORDER BY CustomerID,
         DisplayOrder;