IReport 创建问题 - 获取一年中的所有月份
IReport Creation Issue- Get all Months of Year
我想使用 iReport (JasperReports) 为各个月份的员工创建一个 LeaveCount 交叉表。我正在使用 Oracle 数据库。
问题是,我只得到度量存在的月份,我想显示一年中的所有月份,无论这个月是否存在度量(员工休假)。
您可以创建 table
CREATE TABLE ALLMONTHS
(
MONTHS_MM varchar2(2)
)
;
并在此 table(01,02,03,04...12) 中插入所有 12 个月。
现在使用这个 table 表单查询如下
SELECT a.MONTHS_MM,b.leavecount
FROM ALLMONTHS a
,(SELECT to_char(leavedate,'MM') AS MONTH,leavecount..."your query")b
WHERE a.MONTHS_MM=b.MONTH(+)
这解决了@Pu297 建议的答案的问题。后来 我得到了一个更好的方法,它不涉及 table 创建 并且每次我需要 运行 报告时省去了创建 table 的麻烦新数据库。
select a.mnth,b.leavecount from
(
SELECT to_char(to_date(LVL,'MM'),'MM') mnth
FROM (select level lvl from dual CONNECT BY LEVEL <=12)
) a
,(SELECT to_char(leavedate,'MM') AS MONTH,leavecount..."your query")b
WHERE a.mnth=b.MONTH(+)
我认为这是解决此问题的更好方法。
干杯!!!
我想使用 iReport (JasperReports) 为各个月份的员工创建一个 LeaveCount 交叉表。我正在使用 Oracle 数据库。
问题是,我只得到度量存在的月份,我想显示一年中的所有月份,无论这个月是否存在度量(员工休假)。
您可以创建 table
CREATE TABLE ALLMONTHS
(
MONTHS_MM varchar2(2)
)
;
并在此 table(01,02,03,04...12) 中插入所有 12 个月。 现在使用这个 table 表单查询如下
SELECT a.MONTHS_MM,b.leavecount
FROM ALLMONTHS a
,(SELECT to_char(leavedate,'MM') AS MONTH,leavecount..."your query")b
WHERE a.MONTHS_MM=b.MONTH(+)
这解决了@Pu297 建议的答案的问题。后来 我得到了一个更好的方法,它不涉及 table 创建 并且每次我需要 运行 报告时省去了创建 table 的麻烦新数据库。
select a.mnth,b.leavecount from
(
SELECT to_char(to_date(LVL,'MM'),'MM') mnth
FROM (select level lvl from dual CONNECT BY LEVEL <=12)
) a
,(SELECT to_char(leavedate,'MM') AS MONTH,leavecount..."your query")b
WHERE a.mnth=b.MONTH(+)
我认为这是解决此问题的更好方法。 干杯!!!