我需要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
希望这是有道理的。
答案 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