2016-04-27 24 views
0

ich ein param in birt Bericht übergeben will und es in mehreren palces verwenden, zum Beispiel:Wie man param an mehreren Stellen in birt Bericht verwendet

SELECT * FROM tab1 WHERE startDAte = trunc(sysdate) 
UNION 
SELECT *FROM tab1 WHERE startDate= trunc(sysdate-1) 

So mag ich sysdate wie eine Variable machen:

SELECT * FROM tab1 WHERE startDAte = trunc(?) 
UNION 
SELECT *FROM tab1 WHERE startDate= trunc(?-1) 

Wie kann ich das tun? Dank

Antwort

0

Dies wurde bereits in Reusing an anonymous parameter in a prepared statement

beantwortet Wenn Ihre Datenbank ist Oracle, können Sie auch die folgende Syntax verwenden:

WITH params AS 
(select ? as p_date, 
     ? as p_whatever, 
     ... 
    from dual 
) 
SELECT tab1.* FROM tab1, params WHERE tab1.startDate = trunc (params.p_date) 
UNION 
SELECT tab1.* FROM tab1, params WHERE startDate= trunc (parms.p_date - 1) 

Beachten Sie, dass dies tut nicht haben eine negative Auswirkung auf die Leistung, weil die DB clever genug ist, um zu erkennen, dass die inline-Ansicht params genau eine Zeile enthält.