Sql server Oracle数据源的SSRS 2017中的多值参数不起作用
我正在使用oracle数据源创建SSRS报告。我将多值参数值作为筛选器传递给Oracle数据集。下面是示例查询Sql server Oracle数据源的SSRS 2017中的多值参数不起作用,sql-server,oracle,reporting-services,report,ssrs-2012,Sql Server,Oracle,Reporting Services,Report,Ssrs 2012,我正在使用oracle数据源创建SSRS报告。我将多值参数值作为筛选器传递给Oracle数据集。下面是示例查询 select *from FIN.FINANCIAL_TRANSACTION F where TO_DATE(F.CREATE_DATETIME) BETWEEN to_date(:startdate,'YYYY-MM-DD') and to_date(:enddate,'YYYY-MM-DD') AND F.SUBTYPE IN (:subtype) 当我在:subtype参
select *from FIN.FINANCIAL_TRANSACTION F
where TO_DATE(F.CREATE_DATETIME) BETWEEN to_date(:startdate,'YYYY-MM-DD') and to_date(:enddate,'YYYY-MM-DD')
AND F.SUBTYPE IN (:subtype)
当我在:subtype参数中传递单个值时,此查询工作。当我传递多个值时,我没有得到任何输出。当参数中有多个值时,它将作为逗号分隔的字符串传递。所以我尝试用下面的查询拆分字符串。但在报告处理中出现错误
从FIN.FINANCIAL\u事务F中选择*,其中
TO_DATEF.CREATE_DATETIME介于TO_date之间:startdate,'YYYY-MM-DD'
截止日期:选择中的enddate、'YYYY-MM-DD'和F.SUBTYPE
regexp_substrrese:子类型,,'',[^,]+',1,级别为txt
从regexp_子序列的双连接:子类型,,“”,
“[^,]+”,1,级别不为空
查询中的问题是替换:子类型“”。 为什么要用双引号替换单引号 Oracle中的值总是用单引号括起来,如下所示-
F.SUBTYPE IN ('val1','val2','val3',.....)
所以我认为这是你的疑问的唯一问题
对于逗号分隔的多个输入参数,您可以使用分层查询,如下所示:重复查询以提供实际查询:
SELECT
*
FROM
FIN.FINANCIAL_TRANSACTION F
WHERE
TO_DATE(F.CREATE_DATETIME) BETWEEN TO_DATE(:STARTDATE, 'YYYY-MM-DD')
AND TO_DATE(:ENDDATE, 'YYYY-MM-DD')
-- changes after this line (IN clause)
AND F.SUBTYPE IN (
SELECT DISTINCT
TRIM(REGEXP_SUBSTR(:SUBTYPE, '[^,]+', 1, LEVEL)) VALUE
FROM
DUAL
CONNECT BY
REGEXP_SUBSTR(:SUBTYPE, '[^,]+', 1, LEVEL) IS NOT NULL
);
这将支持单值和多值命令分离
干杯 Hi-Tejesh我现在能够通过where condition INSTR:subtype,SubtypeName>0中的以下子句传递多值参数。我正试图用下面的代码实现All if null条件,其中INSTR:subtype、subtypename>0或:subtype='All',但总是出现错误。你能帮忙吗?嗨,我尝试了这个方法,但是我得到了一个非法变量名/编号的错误。但是,如果我硬编码日期参数的值,那么它不会给我任何错误,但是在从另一个参数中选择多个值之后,报告数据不会被过滤掉。知道发生了什么吗