我正在使用 iReport 创建 JasperReport,因此,我仅限于*一个 SQL 查询。
我有一个“统计”表,有一个“名称”(VARCHAR)、“计数”(INTEGER)和“日期时间”(DATETIME)列。
当最后一天的“名称”为“测试”时,获得“计数”列的总和很简单,上周和月份也是如此(见下文)
工作 SQL 语句:
SELECT
SUM(count)as 'today'
FROM
statistics
WHERE
name = "test"
AND $P{oneDayAgo} <= datetime
AND datetime <= $P{now}
- 但是,由于我只有一个 SQL 语句可以使用,我需要以某种方式将它们组合起来。我尝试使用 UNION(如下所示),但这不起作用。
失败的 SQL 语句:
SELECT
SUM(count)as 'today'
FROM
statistics
WHERE
name = "test"
AND $P{oneDayAgo} <= datetime
AND datetime <= $P{now}
UNION
SELECT
SUM(count)as 'thisWeek'
FROM
statistics
WHERE
name = "test"
AND $P{oneWeekAgo} <= datetime
AND datetime <= $P{now}
UNION
SELECT
SUM(count)as 'thisMonth'
FROM
statistics
WHERE
name = "test"
AND $P{oneMonthAgo} <= datetime
AND datetime <= $P{now}
(*) 只能为图表或交叉表添加额外的查询,这都不符合我的目的。