如何在 postgresql 中使用聚合函数与连接查询和 case when 条件
how to use aggregrate function in postgresql with join query and case when condition
我将使用 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;
当 运行 以上查询和第一个日期弹出窗口打开时,如果我没有在其中输入任何内容,那么它必须从数据库中选择最小值,如果另一个日期弹出窗口打开,我将不在其中插入任何内容,所以它必须从 table ....
中获取最大值
请检查查询有什么问题,因为它会一直有效,直到我将日期字段之一留空
不幸的是null
不等于null
,null是未定义的,没什么,你需要把你的语句改成这样
CASE ($P{fromdate}::DATE is null)
WHEN true THEN
(select min(orderdate) from ordert)
ELSE
$P{fromdate}::DATE
END
我将使用 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;
当 运行 以上查询和第一个日期弹出窗口打开时,如果我没有在其中输入任何内容,那么它必须从数据库中选择最小值,如果另一个日期弹出窗口打开,我将不在其中插入任何内容,所以它必须从 table ....
中获取最大值请检查查询有什么问题,因为它会一直有效,直到我将日期字段之一留空
不幸的是null
不等于null
,null是未定义的,没什么,你需要把你的语句改成这样
CASE ($P{fromdate}::DATE is null)
WHEN true THEN
(select min(orderdate) from ordert)
ELSE
$P{fromdate}::DATE
END