1
上查询条款
我有以下查询:如何使用,如果在iReport的
SELECT COLUMN1, COLUMN2, COUNT(*)
FROM TABLE
WHERE COLUMN3 IS NOT NULL
AND COLUMN4 = 1
AND COLUMN5 = 4
AND COLUMN6 = 43
AND COLUMN7 = $P{YEAR}
AND COLUMN8 = $P{IT}
GROUP BY COLUMN1, COLUMN2
ORDER BY COLUMN1 ASC
我不知道是否有可能做这样的事情:
SELECT COLUMN1, COLUMN2, COUNT(*)
FROM TABLE
WHERE COLUMN3 IS NOT NULL
AND COLUMN4 = 1
AND COLUMN5 = 4
AND COLUMN6 = 43
AND COLUMN7 = $P{YEAR}
IF ($P{IT} != 'ALL') { AND COLUMN8 = $P{IT} }
GROUP BY COLUMN1, COLUMN2
ORDER BY COLUMN1 ASC
换句话说,我想只有当“$ P {IT}”值不是“ALL”时才添加到where子句“AND COLUMN8 = $ P {IT}”。这意味着如果报告必须按“COLUMN8”列进行过滤。
是否有人知道这是可能的?还有其他方法可以完成这项工作吗?
我试图执行上面的查询,但我得到了'编译运行时间'。
在此先感谢。
谢谢。这是什么意思$ P,$ P **!** {IT_SQL}之后的感叹号?对不起,这是因为我几乎是iReport的新手。 – ceochronos
@madahlman我做了同样的事情,但我得到了'Target Eception:java.lang.NullPointerException' – Raghu
@Raghu,这意味着$ P {IT}为空,并且$ P {IT} .equals()会抛出异常。确保$ P {IT}已初始化。或者也许你可以改变逻辑:“ALL”.equals($ P {IT})我发现很难阅读/维护,但它可能很容易避免NPE。 – mdahlman