我不太了解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