在oracle中传递值为年,季,月

时间:2013-09-26 05:50:17

标签: oracle birt

我正在查询日期列现在我必须将参数传递给此单个查询 比如年,季,月。通过级联listbox.so如何根据参数改变此查询..

my query:

select distinct 
OUTLET_NAME,
ROUND (nvl(sum(WALKIN_WITHOUT_CGROUP),0)/ COUNT(*),2)APC,
ROUND((nvl(SUM(SALES_VALUE),0)+nvl(sum(total_sales),0)-nvl(sum(net_sales),0)+nvl(sum(discount),0))/nvl(sum(BILLS_WITHOUT_CGROUP),0))ASPB,
ROUND((nvl(SUM(SALES_VALUE),0)+nvl(sum(total_sales),0)-nvl(sum(net_sales),0)+nvl(sum(discount),0))/COUNT(*),2) ASPD,
nvl(sum(BILLS_WITHOUT_CGROUP),0) Bill,
trunc(nvl(SUM(SALES_VALUE),0)+nvl(sum(total_sales),0)-nvl(sum(net_sales),0)+nvl(sum(discount),0)) Sale,
nvl(sum(WALKIN_WITHOUT_CGROUP),0) WALKINS
from OUTLET_PAYMODE_REPORT_FACT A,OUTLET_DETAILS B
WHERE  A.OUTLET_ID=B.OUTLET_ID and SALES_VALUE>0
and tran_date  between '01-Apr-2012' and '31-Mar-2013'
group by OUTLET_NAME

1 个答案:

答案 0 :(得分:0)

我假设您有两个参数:parameter1,其中包含期间的开始日期,parameter2包含结束日期。参数可以是级联还是不级联。

您可以创建两个包含参数值的变量:

var startDate = params["parameter1"]

和enddate相同。或者,如果您仅指定开始日期(例如,2012年1月1日)和期间(月,季度或年),您可以计算结束日期并将其用作第二个变量的值。

完成后,您可以在GUI中打开数据集,并将查询作为JavaScript复制到属性绑定中。这会将整个查询重写为字符串:

query line 1
query line 2
query line 3

变为

"query line 1 "+
"query line 2 "+
"query line 3 "

然后,您可以使用您指定的变量:

"and tran_date  between '" +vars["startDate"] +"' and '" +vars["endDate"] +"'"

请注意使用正确的日期格式填充变量,并确保包含正确数量的引号和空格 - '很容易被忽略!