 <p>I think you can use a sub report, I know that you need a HashMap to build a sub report, then I propose the following:</p> <p>1.- Create three classes:</p> <pre><code>public class RowEmployee { private int sno; private String supervisor; private int [] machines; private String [] employees; // getters and setters } public class RowMachinesDetails { private int sno; private int machine; private int workMins; private int productinKg; // getters and setters } public class Shift { private Date dateShift; private List&lt;TableEmployee&gt; listTableEmployee; private List&lt;TableMachinesDetails&gt; listTableMachinesDetails; // getters and setters } </code></pre> <p>The RowEmployee class is for the first table, the RowMachinesDetails is for the second table and the Shift class is for each shift of your report. As you can see, the Shift class has a list of RowEmployee and a list of RowMachinesDetails, because these lists correspond to each table, also it has a date which corresponds to date of the shift.</p> <p>2.- Fill your lists with data of employee and data of production</p> <pre><code>List&lt;TableEmployee&gt; listTableEmployee = new ArrayList&lt;TableEmployee&gt;(); List&lt;TableMachinesDetails&gt; listTableMachinesDetails = new ArrayList&lt;TableMachinesDetails&gt;(); //Create instances of TableEmployee and TableMachinesDetails, and fill your lists listTableEmployee.add(TableEmployee); listTableMachinesDetails(TableMachinesDetails); </code></pre> <p>3.- Create instances of Shift and fill your HashMap with these instances, put the number of shift as key in the HashMap.</p> <pre><code>//Create instances of Shift Shift shift = new Shift(); shift.setDateShitf (dateShift); shift.setListTableEmployee(listTableEmployee); shift.setListTableMachinesDetails(listTableMachinesDetails); //Fill the HashMap hashMapShift.add("I", shift); </code></pre> <p>4.- Finally, create your datasource as HashMap in iReport and use hashMapShift to fill your datasource.</p> <p>NOTE: Maybe the type of variables aren't appropiate, the most important is the concept of the solution.</p> <p>I hope this helps you.</p> <p>Good Luck.</p>