DataTable - Grouping

DataTable column headers and footers can be grouped for complex display.

Sales/Profits of Manufacturers
ManufacturerSales
Sales CountProfit
Last YearThis YearLast YearThis Year
Totals:442903$637411$
Mercedes 32% 10% 20551$ 74353$
BMW 80% 22% 36929$ 93566$
Volvo 90% 59% 85172$ 69727$
Audi 52% 55% 90916$ 68360$
Renault 80% 34% 27724$ 87847$
Opel 68% 52% 46573$ 36864$
Volkswagen 63% 18% 3754$ 33786$
Chrysler 23% 26% 4805$ 81880$
Ferrari 8% 77% 68841$ 39855$
Ford 53% 34% 57638$ 51173$

Source

<h:form id="form">
    <p:dataTable id="salesTable" var="sale" value="#{tableBean.sales}">

        <f:facet name="header">
            Sales/Profits of Manufacturers
        </f:facet>

        <p:columnGroup type="header">
            <p:row>
                <p:column rowspan="3" headerText="Manufacturer" />
                <p:column colspan="4" headerText="Sales" />
            </p:row>

            <p:row>
                <p:column colspan="2" headerText="Sales Count" />
                <p:column colspan="2" headerText="Profit" />
            </p:row>

            <p:row>
                <p:column headerText="Last Year" />
                <p:column headerText="This Year" />
                <p:column headerText="Last Year" />
                <p:column headerText="This Year" />
            </p:row>
        </p:columnGroup>

        <p:column>
            #{sale.manufacturer}
        </p:column>

        <p:column>
            #{sale.lastYearProfit}%
        </p:column>

        <p:column>
            #{sale.thisYearProfit}%
        </p:column>

        <p:column>
            #{sale.lastYearSale}$
        </p:column>

        <p:column>
            #{sale.thisYearSale}$
        </p:column>

        <p:columnGroup type="footer">
            <p:row>
                <p:column colspan="3" footerText="Totals:"
                                style="text-align:right"  />

                <p:column footerText="#{tableBean.lastYearTotal}$" />

                <p:column footerText="#{tableBean.thisYearTotal}$" />
            </p:row>
        </p:columnGroup>

        <f:facet name="footer">
            Use a bicycle instead of a car
        </f:facet>

    </p:dataTable>
</h:form>