I have examples of how to use datasets in my book and how to hide fields using the ReportObject class. Crystal Reports has examples of using datasets on their website.
For the SQL you would need to use something like this to keep a field in the dataset, but not have any data in it. In this example I set Field2 to be blank.
SELECT Field1, Field2="", Field3 FROM table
You would have to use conditional logic to dynamically create the Sql statement so that the proper fields are blanked out.