I spent some time wrestling with this issue too. I eventually realized that the WHERE clause on the nested SELECT TOP 1 requires ALL of the same WHERE conditions as the outer SELECT. It also needs the same ORDER BY.
I managed to get an off-set to work by using a "Repeater with Custom Query" web part. First, define a custom query for your document type. Here's my example, which I called "selectDocumentsWithOffset1". As you can see, the WHERE and ORDER BY is used in both the outer and inner SELECT statements.
SELECT ##TOPN## ##COLUMNS##
FROM View_CONTENT_News_Joined -- DOCUMENT TYPE hardcoded, use the correct database view
WHERE( ##WHERE## )
AND ( NodeID NOT IN (
SELECT TOP 1 -- OFFSET hardcoded
NodeID
FROM View_CONTENT_News_Joined -- DOCUMENT TYPE hardcoded, use the correct database view
WHERE ( ##WHERE## )
ORDER BY ##ORDERBY##
)
)
ORDER BY ##ORDERBY##
Notes:
1. You will need to edit this custom query to use your own document type and offset count.
2. I used NodeID rather than NewsItemID, to avoid the NodeSiteID problem described by Juraj.
If you're trying to do this with a regular CMS repeater web part, it's quite likely that you're passing in other conditions like path, published, etc.
Unlike a regular CMSRepeater, a QueryRepeater doesn't offer options for published, path, maxRelativeLevel, etc., so you'll need to provide these yourself in the QueryRepeater's Where condition. Here's an example - it's similar to the SQL which CMSRepeater generates internally from its properties:
(SiteName = N'MySite')
AND
(Published = 1)
AND
(DocumentCulture = N'en-GB')
AND
(NodeAliasPath LIKE N'/latest-news/%')
AND
(NodeLevel <= 2)