如何在Jaspersoft查询中实现短参数到目标值的转换?
Jaspersoft报表短参数映射解决方案
你可以通过SQL的CASE语句实现短参数到目标值的映射,替换原查询中直接使用$P{P_CLIENT_TYPE}的部分,这样就能让系统识别短参数对应的完整值:
修改后的查询如下:
select distinct (SELECT MIN(INS_FROM) FROM [dbo].[INSURANCE_DB] where [CLIENT_TYPE] LIKE CASE $P{P_CLIENT_TYPE} WHEN 'INS' THEN 'Insured' WHEN 'PH' THEN 'Policy Holder' ELSE '%' END and code_type = $P{P_CODE_TYPE} and code = $P{P_COD} ) MIN_INS_FROM, IIF( x.max1 > DATEADD(day, -1, GETDATE()) ,DATEADD(day, -1, GETDATE()) , x.max1 ) MAX_INS_TO
说明:
- 当参数传入
INS时,CASE会返回'Insured',让LIKE匹配对应的客户类型 - 传入
PH时,返回'Policy Holder',匹配对应类型 - 传入
%时,直接返回%,实现匹配所有客户类型(对应原需求的"BOTH")
之前用REPLACE没生效,是因为REPLACE只能做单一字符串替换,无法处理这种多分支的映射逻辑,CASE语句更适合这种多值对应场景。
内容的提问来源于stack exchange,提问作者Trishka1111
相关产品推荐
相关产品推荐

