2016-01-23 13 views
0

我將把下面的內容放在使用iReport的jasper報表中,它工作正常,直到我不會將其中一個日期值留作空白,它不會產生被接受的結果....如何在postgresql中使用聚合函數加入查詢和條件時的情況

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

不幸的是null不等於null,null是不確定的,什麼都沒有,你需要改變你的聲明像這樣的東西

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