交叉报表crosstab:ireport3.0.0右键点击切换到交叉表设计页,首先增加一个dataset,查询sql如下:
select user_id_atte, to_char(attendance_time,'yyyy-mm-dd') attendance_time from t_attendance_time t where
t.ATTENDANCE_AVALID='Y'
and t.ATTENDANCE_TIME > to_date('2010-9-10','yyyy-mm-dd')
一个交叉报表实例:test.jrxml:
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Created with iReport - A designer for JasperReports -->
<!DOCTYPE jasperReport PUBLIC "//JasperReports//DTD Report Design//EN"
"http://jasperreports.sourceforge.net/dtds/jasperreport.dtd">
<jasperReport
name="crosstab2"
columnCount="1"
printOrder="Vertical"
orientation="Portrait"
pageWidth="595"
pageHeight="842"
columnWidth="535"
columnSpacing="0"
leftMargin="20"
rightMargin="20"
topMargin="20"
bottomMargin="20"
whenNoDataType="NoPages"
isTitleNewPage="false"
isSummaryNewPage="false">
<property name="ireport.scriptlethandling" value="0" />
<property name="ireport.encoding" value="UTF-8" />
<import value="java.util.*" />
<import value="net.sf.jasperreports.engine.*" />
<import value="net.sf.jasperreports.engine.data.*" />
<style
name="Crosstab Data Text"
isDefault="false"
hAlign="Center"
>
</style>
<subDataset name="dataset1" >
<queryString><![CDATA[select user_id_atte, to_char(attendance_time,'yyyy-mm-dd') attendance_time from
t_attendance_time t where t.ATTENDANCE_AVALID='Y'
and t.ATTENDANCE_TIME > to_date('2010-9-10','yyyy-mm-dd')]]></queryString>
<field name="USER_ID_ATTE" class="java.math.BigDecimal"/>
<field name="ATTENDANCE_TIME" class="java.lang.String"/>
</subDataset>
<queryString><![CDATA[select user_id,username from t_user]]></queryString>
<field name="USER_ID" class="java.math.BigDecimal"/>
<field name="USERNAME" class="java.lang.String"/>
<background>
<band height="0" isSplitAllowed="true" >
</band>
</background>
<title>
<band height="79" isSplitAllowed="true" >
<staticText>
<reportElement
x="232"
y="28"
width="100"
height="20"
key="staticText"/>
<box></box>
<textElement>
<font/>
</textElement>
<text><![CDATA[Static text]]></text>
</staticText>
</band>
</title>
<pageHeader>
<band height="0" isSplitAllowed="true" >
</band>
</pageHeader>
<columnHeader>
<band height="0" isSplitAllowed="true" >
</band>
</columnHeader>
<detail>
<band height="0" isSplitAllowed="true" >
</band>
</detail>
<columnFooter>
<band height="0" isSplitAllowed="true" >
</band>
</columnFooter>
<pageFooter>
<band height="50" isSplitAllowed="true" >
<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now"
hyperlinkType="None" hyperlinkTarget="Self" >
<reportElement
x="232"
y="12"
width="80"
height="20"
key="textField"/>
<box></box>
<textElement textAlignment="Right">
<font/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA["Page "+$V{PAGE_NUMBER}+"
of"]]></textFieldExpression>
</textField>
<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Report"
hyperlinkType="None" hyperlinkTarget="Self" >
<reportElement
x="312"
y="12"
width="40"
height="20"
key="textField"/>
<box></box>
<textElement>
<font/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[" " + $V{PAGE_NUMBER}]]
></textFieldExpression>
</textField>
</band>
</pageFooter>
<summary>
<band height="802" isSplitAllowed="true" >
<crosstab >
<reportElement
x="0"
y="0"
width="555"
height="802"
key="crosstab"/>
<crosstabDataset>
<dataset >
<datasetRun subDataset="dataset1">
<connectionExpression><![CDATA[$P
{REPORT_CONNECTION}]]></connectionExpression>
</datasetRun>
</dataset>
</crosstabDataset>
<crosstabHeaderCell>
<cellContents mode="Transparent">
<box></box>
<rectangle>
<reportElement
x="0"
y="0"
width="70"
height="30"
key="rectangle-1"/>
<graphicElement stretchType="NoStretch"/>
</rectangle>
<line direction="TopDown">
<reportElement
x="0"
y="1"
width="70"
height="28"
key="line-1"/>
<graphicElement stretchType="NoStretch"/>
</line>
<staticText>
<reportElement
x="45"
y="3"
width="22"
height="12"
key="staticText-1"/>
<box></box>
<textElement>
<font pdfFontName="Helvetica-Bold" size="8" isBold="true"/>
</textElement>
<text><![CDATA[日期]]></text>
</staticText>
<staticText>
<reportElement
x="2"
y="16"
width="27"
height="11"
key="staticText-1"/>
<box></box>
<textElement>
<font pdfFontName="Helvetica-Bold" size="8" isBold="true"/>
</textElement>
<text><![CDATA[用户 id]]></text>
</staticText>
</cellContents>
</crosstabHeaderCell> <rowGroup
name="USER_ID_ATTE" width="70" totalPosition="End">
<bucket>
<bucketExpression class="java.math.BigDecimal"><![CDATA[$F
{USER_ID_ATTE}]]></bucketExpression>
</bucket>
<crosstabRowHeader>
<cellContents backcolor="#F0F8FF" mode="Opaque">
<box> <pen lineWidth="0.5"
lineStyle="Solid" lineColor="#000000"/>
<topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
</box>
<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now"
hyperlinkType="None" hyperlinkTarget="Self" >
<reportElement
style="Crosstab Data Text"
x="0"
y="0"
width="70"
height="25"
key="textField"/>
<box></box>
<textElement verticalAlignment="Middle">
<font/>
</textElement>
<textFieldExpression class="java.math.BigDecimal"><![CDATA[$V{USER_ID_ATTE}]]
></textFieldExpression>
</textField>
</cellContents>
</crosstabRowHeader>
<crosstabTotalRowHeader>
<cellContents backcolor="#BFE1FF" mode="Opaque">
<box> <pen lineWidth="0.5"
lineStyle="Solid" lineColor="#000000"/>
<topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
</box>
<staticText>
<reportElement
x="0"
y="0"
width="70"
height="25"
key="staticText"/>
<box></box>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font/>
</textElement>
<text><![CDATA[Total USER_ID_ATTE]]></text>
</staticText>
</cellContents>
</crosstabTotalRowHeader>
</rowGroup>
<columnGroup name="ATTENDANCE_TIME" height="30" totalPosition="End"
headerPosition="Center">
<bucket>
<bucketExpression class="java.lang.String"><![CDATA[$F
{ATTENDANCE_TIME}]]></bucketExpression>
</bucket>
<crosstabColumnHeader>
<cellContents backcolor="#F0F8FF" mode="Opaque">
<box> <pen lineWidth="0.5"
lineStyle="Solid" lineColor="#000000"/>
<topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
</box>
<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now"
hyperlinkType="None" hyperlinkTarget="Self" >
<reportElement
style="Crosstab Data Text"
x="0"
y="0"
width="67"
height="30"
key="textField"/>
<box></box>
<textElement verticalAlignment="Middle">
<font/>
</textElement>
<textFieldExpression class="java.lang.String"><![CDATA[$V{ATTENDANCE_TIME}]]
></textFieldExpression>
</textField>
</cellContents>
</crosstabColumnHeader>
<crosstabTotalColumnHeader>
<cellContents backcolor="#BFE1FF" mode="Opaque">
<box> <pen lineWidth="0.5"
lineStyle="Solid" lineColor="#000000"/>
<topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
</box>
<staticText>
<reportElement
x="0"
y="0"
width="72"
height="30"
key="staticText"/>
<box></box>
<textElement textAlignment="Center" verticalAlignment="Middle">
<font/>
</textElement>
<text><![CDATA[Total ]]></text>
</staticText>
</cellContents>
</crosstabTotalColumnHeader>
</columnGroup>
<measure name="USER_ID_ATTEMeasure" class="java.math.BigDecimal"
calculation="Count">
<measureExpression><![CDATA[$F{USER_ID_ATTE}]]
></measureExpression>
</measure>
<crosstabCell width="68" height="25">
<cellContents mode="Transparent">
<box> <pen lineWidth="0.5"
lineStyle="Solid" lineColor="#000000"/>
<topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
</box>
<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now"
hyperlinkType="None" hyperlinkTarget="Self" >
<reportElement
style="Crosstab Data Text"
x="0"
y="0"
width="67"
height="25"
key="textField"/>
<box></box>
<textElement verticalAlignment="Middle">
<font/>
</textElement>
<textFieldExpression class="java.math.BigDecimal"><![CDATA[$V
{USER_ID_ATTEMeasure}]]></textFieldExpression>
</textField>
</cellContents>
</crosstabCell>
<crosstabCell width="68" height="25" rowTotalGroup="USER_ID_ATTE">
<cellContents backcolor="#BFE1FF" mode="Opaque">
<box> <pen lineWidth="0.5"
lineStyle="Solid" lineColor="#000000"/>
<topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
</box>
<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now"
hyperlinkType="None" hyperlinkTarget="Self" >
<reportElement
style="Crosstab Data Text"
x="0"
y="0"
width="67"
height="25"
key="textField"/>
<box></box>
<textElement verticalAlignment="Middle">
<font/>
</textElement>
<textFieldExpression class="java.math.BigDecimal"><![CDATA[$V
{USER_ID_ATTEMeasure}]]></textFieldExpression>
</textField>
</cellContents>
</crosstabCell>
<crosstabCell width="73" height="25" columnTotalGroup="ATTENDANCE_TIME">
<cellContents backcolor="#BFE1FF" mode="Opaque">
<box> <pen lineWidth="0.5"
lineStyle="Solid" lineColor="#000000"/>
<topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
</box>
<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now"
hyperlinkType="None" hyperlinkTarget="Self" >
<reportElement
style="Crosstab Data Text"
x="0"
y="0"
width="72"
height="25"
key="textField"/>
<box></box>
<textElement verticalAlignment="Middle">
<font/>
</textElement>
<textFieldExpression class="java.math.BigDecimal"><![CDATA[$V
{USER_ID_ATTEMeasure}]]></textFieldExpression>
</textField>
</cellContents>
</crosstabCell>
<crosstabCell width="73" height="25" rowTotalGroup="USER_ID_ATTE"
columnTotalGroup="ATTENDANCE_TIME">
<cellContents backcolor="#BFE1FF" mode="Opaque">
<box> <pen lineWidth="0.5"
lineStyle="Solid" lineColor="#000000"/>
<topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
</box>
<textField isStretchWithOverflow="false" isBlankWhenNull="false" evaluationTime="Now"
hyperlinkType="None" hyperlinkTarget="Self" >
<reportElement
style="Crosstab Data Text"
x="0"
y="0"
width="72"
height="25"
key="textField"/>
<box></box>
<textElement verticalAlignment="Middle">
<font/>
</textElement>
<textFieldExpression class="java.math.BigDecimal"><![CDATA[$V
{USER_ID_ATTEMeasure}]]></textFieldExpression>
</textField>
</cellContents>
</crosstabCell>
<whenNoDataCell>
<cellContents mode="Transparent">
<box> <pen lineWidth="0.5"
lineStyle="Solid" lineColor="#000000"/>
<topPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<leftPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<bottomPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
<rightPen lineWidth="0.5" lineStyle="Solid" lineColor="#000000"/>
</box>
</cellContents>
</whenNoDataCell> </crosstab>
</band>
</summary>
</jasperReport>