【问题标题】:pass value as year,quarter,month in oracle在 oracle 中将值作为年、季度、月传递
【发布时间】:2013-09-26 05:50:16
【问题描述】:

现在正在查询日期列,我必须将参数传递给这个单一查询 像年,季度,月。通过级联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

【问题讨论】:

  • 请更具体地说明您在寻找什么。
  • 从此查询中我希望计算年、季度、月...
  • 编写一个采用“resultsBy”值的存储过程并动态生成查询。 "resultsBy" 将是年、季度或月
  • 我是 oracle 的初学者,是否有可能为此场景制作示例

标签: oracle birt


【解决方案1】:

我假设您有两个参数: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"] +"'"

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 2020-11-16
    • 2021-03-08
    • 2020-10-06
    • 2021-05-17
    • 2021-12-08
    相关资源
    最近更新 更多