Using a read-only query as a page data source is as easy as a view. All you need is to provide a valid SELECT statement and define key columns, if they are not determined automatically.
You can find an example of a quite complex read-only queries in our Schema Browser Demo.