Предположим, что ваша таблица имеет следующие столбцы: ID, UserID, PostedDate, Subject
Тогда запрос может выглядеть следующим образом:
DECLARE @LoggedInUserID int,
@RowsPerPage int,
@PageNum int;
SELECT @LoggedInUserID = 1,
@RowsPerPage = 10,
@PageNum = 1;
with BlogPostCTE
AS
(
select
bp.ID,
bp.UserID,
bp.PostedDate,
CASE WHEN bp.UserID = @LoggedInUserID THEN 1 ELSE 0 END as IsLoggedInUser,
bp.[Subject]
from BlogPost as bp
), BlogPostWithPagingCTE
AS
(
Select Top(@RowsPerPage * @PageNum)
ResultNum = ROW_NUMBER() OVER (ORDER BY IsLoggedInUser desc, UserID, PostedDate asc),
ID,
UserID,
PostedDate,
IsLoggedInUser,
[Subject]
FROM BlogPostCTE
)
select
ID,
UserID,
PostedDate,
[Subject]
FROM BlogPostWithPagingCTE
where ResultNum > ((@PageNum - 1) * @RowsPerPage)