如何在postgresql中使用聚合函数与连接查询和条件时的情况

时间:2016-01-23 12:57:12

标签: postgresql jasper-reports

我将使用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;

当运行上面的查询和第一个日期弹出窗口打开时,如果我在其中输入任何内容,那么它必须从数据库中选择最小值,如果另一个日期弹出窗口打开,我将不插入任何内容,所以它必须从中获取最大值桌子......

请检查查询是否有错,因为它会起作用,直到我将其中一个日期字段留空

1 个答案:

答案 0 :(得分:1)

不幸的是 null不等于null ,null未定义,没有,您需要将语句更改为此类

CASE ($P{fromdate}::DATE is null)
WHEN true THEN
    (select min(orderdate) from ordert)
ELSE 
    $P{fromdate}::DATE
END