0

我现在有日期列的查询我必须将参数传递给这个单一的查询,比如年,季度,月。通过级联列表框。所以如何根据参数改变这个查询..

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
4

1 回答 1

0

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

您可以创建两个保存参数值的变量:

var startDate = params["parameter1"]

和结束日期一样。或者,如果您仅指定开始日期(例如,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"] +"'"

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

于 2013-10-09T07:55:44.723 回答