Have a look at the table syscolumns and related ones. This looks rather like what you describe. But with many years of work Sybase and Microsoft have come up with a way that is probably more efficient than you can come up with.
To make use of this for each different set of columns in a report create a new table an import the data - the database will manage the access for you. You comment on no indicies on these tables - but where do you hold that information in your schema - if you had that data then just as easy to create indices on these SQL tables.