there is something called "Virtual List Technique" by Bruce Robertson - search for it and it might answer all your questions.
another method is to parse your query results as Html and present in the web viewer - i am positive you find this also if you research web viewer techniques.
another related way is to cache / map your result with variables and have calculations aiming at them - which requires careful caching to not get all slowed down ..
The ExecuteSQL() function is meant to find and retrieve data. The result of it is just text (by default: return delimited text with each line being a record and the field data separated by commas - but you can change those delimiters).
So the result of an ExecuteSQL() call is not a found set of data that you can display directly in a layout or a portal. If you want to display the result of the query you have to do something with it. Like building a virtual list or an HTML table for the web viewer.
My question is if i have portal; the portal will display related records of that customers only. So how can I use execute SQL script to display data in table.
You probably don't need ExecuteSQL here given the extra hoops you'd have to jump through to display the data. If you are on the context of a customer and want to display that customer's related info (timesheets, notes,...) then you can just use the existing relationships. You can limit the portal and set the sort on the portal so that it will only display say the 10 most recent records.
wim is probably right here (he usually is!) and you don't need ExecuteSQL. however, the question was asked about eSQL and VLists. See these articles (similar to the FileMaker Training Series usage):
It's a good place to understand how ExecuteSQL can be used to make Virtual Lists.
A simple method that I have used is to specify tabs as field separators and returns as row separators in a large scroll bar equipped field. I use the inspector to set tab stops to get columns of different widths.