如何应用非标准SQL列排序顺序?

Kee*_*ker 3 t-sql sql-server

考虑下面的表格Persons:

Key Name    Type    Date        Pack
1   Pocoyo  KIND    30-11-2011  1
2   Erik    MAN     10-10-1980  1
3   Alinda  VROUW   12-12-1991  1
4   Pingu   KIND    11-12-2012  1
5   Elisia  KIND    11-11-2010  1
6   Kees    MAN     10-11-1984  2
Run Code Online (Sandbox Code Playgroud)

现在,我想排序该表Pack,TypeDate,但我想Type进行排序一样MAN,VROUW,KIND,所以基本上理想的结果应该是这样的:

Key Name    Type    Date        Pack
2   Erik    MAN     10-10-1980  1
3   Alinda  VROUW   12-12-1991  1
5   Elisia  KIND    11-11-2010  1
1   Pocoyo  KIND    30-11-2011  1
4   Pingu   KIND    11-12-2012  1
6   Kees    MAN     10-11-1984  2
Run Code Online (Sandbox Code Playgroud)

如何创建此查询?

sll*_*sll 8

试用

SELECT * 
FROM Persons
ORDER BY
    Pack,
    CASE Type
        WHEN 'MAN' THEN 1
        WHEN 'VROUW' THEN 2
        WHEN 'KIND' THEN 3
    END,
    Date ASC
Run Code Online (Sandbox Code Playgroud)

MSDN:CASE(Transact-SQL)

CASE可以在任何允许有效表达式的语句或子句中使用.例如,您可以在SELECT,UPDATE,DELETE和SET等语句中使用CASE,也可以在select_list,IN,WHERE,ORDER BY和HAVING 等子句中使用CASE .