Apparently the problem here is that JasperReports can't work with table aliases. The following form works: SELECT db.`TContract`.`TennantID`, db.`TContract`.`ContractID`, db.`TContract`.`ContractDescription`, db.`TCampaign`.`CampaignID`, db.`TCampaign`.`CampaignDescription`, db.`TCampaign`.`StartDate` AS CampaignStartDate, db.`TCampaign`.`EndDate` AS CampaignEndDate, db.`TCampaign`.`CampaignStatus`, db.`TCoupon`.`CouponID`, db.`TCoupon`.`CouponDescription`, db.`TCoupon`.`ValidityDays`, db.`TCoupon`.`StartDate` AS CouponStartDate, db.`TCoupon`.`EndDate` AS CouponEndDate, sum( db.`TCoupon`.`CouponValue` ), count( db.`TCardCoupon`.`CardCouponID` )FROM db.`TCardCoupon` LEFT OUTER JOIN db.`TCoupon` ON db.`TCoupon`.`CouponID` = db.`TCardCoupon`.`CouponID` LEFT OUTER JOIN db.`TCampaign` ON db.`TCoupon`.`CampaignID` = db.`TCampaign`.`CampaignID` LEFT OUTER JOIN db.`TContract` ON db.`TContract`.`ContractID` = db.`TCampaign`.`ContractID`WHERE db.`TCardCoupon`.`DateRetrieved` IS NULL GROUP BY db.`TCardCoupon`.`CouponID`[/code]