Following section demonstrates using UNION clause. to use the result column(s) of sub-select in another query expression; name or index can be specified.
		// Table Aliases
        var t0 = new Orders().AsQueryable();
        var t1 = new OrderDetails().AsQueryable();
		
		var sql1 = Odb.SQL.Select(x =>
						x.From(t0)
							.GroupBy(t0.EmployeeID)
							.Fields(x["T1"].AS("Type"), 
									x[t0.EmployeeID].AS("Id"), 
									x[t0.OrderID].MAX().AS("OrderID"))
					);
		var sql2 = Odb.SQL.Select(x =>
						x.From(t1)
						.GroupBy(t1.ProductID)
						.Fields(x["T2"].AS("Type"), 
								x[t1.ProductID].AS("Id"), 
								x[t1.OrderID].MAX().AS("OrderID"))
					);

		// union
		Odb.SQL.Union(x =>
						x.RemoveDuplicates()
							.Add(sql1)
							.Add(sql2)
							.Top(5)
							.OrderASC(sql1[0]).OrderASC(sql1[1]).OrderDESC(sql1["OrderID"])
					);
    
SELECT * FROM (
SELECT 'T0' AS Type,
t0.EmployeeID AS Id,
MAX(t0.OrderID) AS OrderID
FROM [Orders] AS t0
GROUP BY t0.EmployeeID
UNION
SELECT 'T1' AS Type,
t1.ProductID AS Id,
MAX(t1.OrderID) AS OrderID
FROM [OrderDetails] AS t1
GROUP BY t1.ProductID
) AS t
ORDER BY Type ASC, Id ASC, OrderID DESC
OFFSET 0 ROWS FETCH NEXT 5 ROWS ONLY
R4nvtn