I need to return, as per example, 20 orders but I dunno how to paginate correctly in my query.
The following query will return 20 rows (order, orderlines, supplements) but not only the 20 first orders.
SELECT *
FROM
(
SELECT *
FROM ( SELECT *
FROM [WS].[viewOrderDetail] AS [Extent1]
WHERE [Extent1].CustomerID IN (2,7,8,9)
) AS [Project1]) AS [Cmd]
LEFT JOIN [WS].[viewOrders] AS [orders] ON ([orders].Id = [cmd].OrderId)
LEFT JOIN [WS].[viewOrderLines] AS [OrderLines] ON ([OrderLines].OrderId= [Cmd].[OrderId])
LEFT JOIN [WS].[viewOrderLineSupplements] AS [Supp] ON (Supp.OrderLineId = OrderLines.Id)
WHERE cmd.OrderId LIKE '%11301%'
union all
SELECT *
FROM
(
SELECT *
FROM ( SELECT *
FROM [WS].[viewOrderDetail] AS [Extent1]
WHERE [Extent1].CustomerID IN (2,7,8,9)
) AS [Project1]) AS [Cmd]
LEFT JOIN [WS].[viewOrders] AS [orders] ON ([orders].Id = [cmd].OrderId)
LEFT JOIN [WS].[viewOrderLines] AS [OrderLines] ON ([OrderLines].OrderId= [Cmd].[OrderId])
LEFT JOIN [WS].[viewOrderLineSupplements] AS [Supp] ON (Supp.OrderLineId = OrderLines.Id)
WHERE OrderLines.Id LIKE '%11301%'
ORDER BY [Cmd].Id ASC OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY
Actual result : Actual result
Should result : Should result
Do you have any idea of how I can paginate properly ?