在分区内按顺序排序

时间:2015-07-15 16:56:06

标签: sql sql-server database

使用Microsoft SQL Server 2008

需要针对以下方案的选择查询
Order Customer Order_Type
1     A        NULL
2     A        NULL
3     B        S
4     C        NULL
5     D        S
6     B        NULL
7     D        S

我想订购类型为S的客户订购,所以我期望的输出如下

Order Customer Order_Type
3     B        S
6     B        NULL
5     D        S
7     D        S
1     A        NULL
2     A        NULL
4     C        NULL

订购类型' S'应该冒泡到顶部,但这些客户的订单仍然必须由客户和其他客户订购。这是我正在使用的查询

SELECT *
    FROM CustomerOrder      
    ORDER BY COUNT(CASE WHEN Order_Type = 'S' THEN 1 END) OVER (PARTITION BY Customer) DESC, 
             Customer

但我得到的输出是

Order Customer Order_Type
5     D        S
7     D        S
3     B        S
6     B        NULL
1     A        NULL
2     A        NULL
4     C        NULL

这是因为计数的顺序。

http://sqlfiddle.com/#!3/3162c/5

0 个答案:

没有答案