1

私は 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
4

2 に答える 2