One approach could be to have 3 different tables.
For the header to stay in place when you scroll the cells, you can create 2 tables. One will contain only the header (without cells) and would be in the north position of a border layout in a JPanel. In the center position of the JPanel you would add a JScrollPane with a table and you would need to remove the header for it, so that the displayed header for the table would be the one of the table in the north position.
For the "subheader" you would need another table, with only one column and a header renderer added to that column. That table should be in the west position of the JPanel.
Finally you would need to synchronise the header of the north table with the columns of the center's one, so when it is resized the columns of the other are as well. If the table is sortable you would need to do the same with the table in the west position.
A better option can be to use TableScrollPane from JIDESoft, that does all this and more behind the scenes, but is paid.
Your choice.