分组中的SQL排序

时间:2012-04-25 11:08:48

标签: sql sql-server sorting

我需要SQL(MSSQL)的帮助,我在这里使用多种布尔类型进行排序以对结果进行分组,但还需要按每个类型分组中的日期字段进行排序。

以下SQL似乎可以正常工作:

Select * from staff ORDER BY admin DESC, hr DESC, sales DESC, it DESC, updated DESC

诀窍是某些记录选择了多个类型,然后输出搞砸了。我只需要在一个分组中显示工作人员,但它们应该按照每个分组中更新的DESC排序。

这是我得到的输出:

Name  updated    admin  hr     sales  it   
-------------------------------------------
fred  2012/04/01 true   true
bill  2011/10/01 true   true
joe   2012/04/01 true
sam   2012/03/01 true
jo    2012/02/01 true
beth  2012/03/01        true
mary  2012/02/01        true
harry 2011/02/01               true  true
gary  2012/04/01               true
bruce 2012/04/01                     true

这是我需要的输出

Name  updated    admin  hr     sales  it   
-------------------------------------------
fred  2012/04/01 true   true
joe   2012/04/01 true
sam   2012/03/01 true
jo    2012/02/01 true
bill  2011/10/01 true   true
beth  2012/03/01        true
mary  2012/02/01        true
gary  2012/04/01               true
harry 2011/02/01               true  true
bruce 2012/04/01                     true

希望这是有道理的。

1 个答案:

答案 0 :(得分:2)

您可以在order by子句中使用case表达式进行条件排序。

SELECT *
FROM staff
ORDER BY
    admin DESC,
    CASE admin WHEN 'true' THEN updated END DESC,
    hr DESC,
    CASE hr WHEN 'true' THEN updated END DESC,
    sales DESC,
    CASE sales WHEN 'true' THEN updated END DESC,
    it DESC,
    updated DESC