I managed to get this working. I realised that the dataset returned via my SQL queries were not having entry for each columns e.g. I was having a row returned for COLUMN 1 and COLUMN 2 for ROW1 but then onwards I was either having a row returned for COLUMN 1 or a row returned for COLUMN 2 by my SQL. Something like General Expenditure Internal Only General Repairs 5 5 Cleaning 5 Accountancy 5 Insurance 5 and so on ....
I changed my SQL query so it returns 0 if there is no data to be retrieved for COLUMN 1 or COLUMN 2 and that made it working in the sorting order I want havin the 'Data is pre-sorted' flag checked for the crosstab. LIKE General Expenditure Internal Only General Repairs 5 5 Cleaning 5 0 Accountancy 0 5 Insurance 5 0 Hope this is helpful for others.