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 に答える