-
lzg19861022 初学数据Lv2
发表于2018-7-12 09:12
悬赏1
已解决
lzg19861022 发表于 2018-7-17 15:15
你好,你说的这个我不太理解啊。能直接给调试一下么。
http://222.74.140.54:4663/bi42/editrpt.do?actio ...
这个问题需要将维表关联进去,若参数选择的级次为0则使用维表的ORG_TYPE_CODE字段过滤,若参数选择的级次为1则使用主题表org_code字段过滤。具体sql写法如下图:
另外,友情建议您把环境的密码改一下
21个回答
根据您的描述。报表想要引用自定义数据源的数据,您先要新建自定义数据源。再引用sql结果中的字段,然后将报表参数传递给SQL数据源或者通过表元值传递给数据源。这样您的报表里就可以引用自定义的数据源了。具体的详细步骤您可以参照楼上发的图片上标注的“帮助”链接。
-
lzg19861022 初学数据Lv2
自定义数据源得日期参数条件写到哪呢?我现在写道单元格得过滤条件,查询结果没有生效。
lzg19861022 发表于 2018-7-12 11:32
自定义数据源得日期参数条件写到哪呢?我现在写道单元格得过滤条件,查询结果没有生效。 ...
日期参数条件可以写到sql里,用where语句,例如where a.bbq like "201807%"
如果还有问题,可以把表样发过来,还有sql查询结果的详情,我们一起研究下
这里就需要把上报的日期参数传递给sql数据源,需要使用宏<#=#>将传递的表达式包起来。
假如你要取“RQ”字段,上面的日期参数代码是@p3005, 那么sql里加上where RQ =<#=@p3005#>
或者where t.register_time=<#=@p3005#>
-
lzg19861022 初学数据Lv2
再问个问题,如果参数条件不选择任何数据,默认显示全部结果,怎么写呢?
比如:
select to_char(t.Settlement_Time, 'MM') as rq, count(1) as sl
from PM_PAY_ACCOUNT t, pos@kfpt pk
where t.org_code = pk.pos_id
AND T.STATUS = 1
AND T.REFUND_STATUS = 0
AND TO_CHAR(T.SETTLEMENT_TIME, 'YYYY') = '<#=if(@rq='',' 1 = 1 ','REGION_ID = '+year(@rq))#>'
AND t.org_code = '<#=@jcjg#>'
group by to_char(t.Settlement_Time, 'MM')
order by to_char(t.Settlement_Time, 'MM')
@rq如果是不选择,怎么写呢,我这么写是错得。
lzg19861022 发表于 2018-7-12 17:46
再问个问题,如果参数条件不选择任何数据,默认显示全部结果,怎么写呢?
比如:
select to_char(t.Settlem ...
'<#=if(@rq='',' 1 = 1 ','REGION_ID = '+year(@rq))#>'这是我们文档上的示例哦,您要把REGION_ID换成您前面那个TO_CHAR(T.SETTLEMENT_TIME, 'YYYY')
这里的逻辑就是用了一个if判断,如果@rq为空,就不做过滤,如果不为空,就还是数据库字段=参数值,只是用if判断就需要用宏,宏里面引用数据库字段就需要用+号来拼字符
AND <#=if(@rq=””,”1=1”,"TO_CHAR(T.SETTLEMENT_TIME, 'YYYY')='"+year(@rq)+"'")#>
这样试试