我将使用iReport将以下内容放入jasper报告中,并且它可以正常工作,直到我不会将其中一个日期值作为空白,它不会产生接受的结果....
SELECT DISTINCT o.oid, o.serialnumber, o.product,o.quantity, o.price, o.orderdate, o.deliverydate,c.fname, c.lname
FROM ordert AS o INNER JOIN customer AS c ON
c.fname LIKE COALESCE(NULLIF(initcap($P{CustomerName}),''),'NONE') AND
o.id = c.id AND orderdate BETWEEN
CASE $P{fromdate}::DATE
WHEN NULL THEN
(select min(orderdate) from ordert)
ELSE
$P{fromdate}::DATE
END
AND
CASE $P{todate}::DATE WHEN NULL
THEN
(select max(orderdate) from ordert)
ELSE
$P{todate}::DATE
END
ORDER BY o.oid;
当运行上面的查询和第一个日期弹出窗口打开时,如果我在其中输入任何内容,那么它必须从数据库中选择最小值,如果另一个日期弹出窗口打开,我将不插入任何内容,所以它必须从中获取最大值桌子......
请检查查询是否有错,因为它会起作用,直到我将其中一个日期字段留空
答案 0 :(得分:1)
不幸的是 null
不等于null
,null未定义,没有,您需要将语句更改为此类
CASE ($P{fromdate}::DATE is null)
WHEN true THEN
(select min(orderdate) from ordert)
ELSE
$P{fromdate}::DATE
END