私は OVER をよく理解していないので、これが何をするのかを明確にしたかったのです。
指定された並べ替えタイプ、レコードのステータス、およびミーティングの日付がある場合:
デフォルトで MeetingDate で並べ替えたいと思います。並べ替えタイプが 2 の場合にステータスで並べ替え、会議の日付で並べ替えたいと思います。
以下のコードはこれを行いますか?私のテストではそうであることが示されていますが、何かが欠けている可能性があります。
SELECT Foo.*,
ROW_NUMBER() OVER (
ORDER BY
CASE @SortType WHEN 2 THEN Foo.FK_Status END ASC,
Foo.MeetingDate DESC
) AS RowOrder
より具体的には、 @SortType が 1 の場合、コードは次のように分解されると考えるのが適切です。
SELECT Foo.*,
ROW_NUMBER() OVER (
ORDER BY
ASC,
Foo.MeetingDate DESC
) AS RowOrder
これは、次のように分解できると思います。
SELECT Foo.*,
ROW_NUMBER() OVER (
ORDER BY
Foo.MeetingDate DESC
) AS RowOrder
(@SortType が 2 の場合) とは対照的に:
SELECT Foo.*,
ROW_NUMBER() OVER (
ORDER BY
Foo.FK_Status ASC,
Foo.MeetingDate DESC
) AS RowOrder