2

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

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

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

诀窍是某些记录选择了超过 1 种类型,然后输出就搞砸了。我只需要在一个分组中显示员工,但他们应该在每个分组中按更新的 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

希望这是有道理的。

4

1 回答 1

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
于 2012-04-25T11:19:31.590 回答