Reporting services 嵌入SSRS SQL查询中的IIF参数

Reporting services 嵌入SSRS SQL查询中的IIF参数,reporting-services,parameter-passing,iif,Reporting Services,Parameter Passing,Iif,我希望你能帮助我理解下面的短语。它们是我的SSRS报告中SQL查询的一部分。从报表生成器->报表->数据集,我选择了数据集属性->查询 下面的部分是WHERE子句的一部分:它指的是SSRS参数,我无法理解它们的含义。它们看起来不像我以前使用的简单IIF语句,因为它们包含许多符号,如“,”,“&“)”&。 如果你能把它们分解开来,帮我解释一下,我将不胜感激 AND PTE_code = '" & Parameters!p_TE.Value & "'") & " AND P

我希望你能帮助我理解下面的短语。它们是我的SSRS报告中SQL查询的一部分。从报表生成器->报表->数据集,我选择了数据集属性->查询

下面的部分是
WHERE
子句的一部分:它指的是SSRS参数,我无法理解它们的含义。它们看起来不像我以前使用的简单IIF语句,因为它们包含许多符号,如“,”,“&“)”&。
如果你能把它们分解开来,帮我解释一下,我将不胜感激

AND PTE_code = '" & Parameters!p_TE.Value & "'") & " 
AND PTY_code IN ('" & Join(Parameters!p_TY.Value,"','") & "') " & Iif(IsNothing(Parameters!pFDate.Value)," "," 
AND (H_expiry_date >= '" & UCase(Format(Parameters!pFDate.Value,"dd-MMM-yyyy")) & "' OR H_expiry_date IS NULL)" ) & Iif(IsNothing(Parameters!pTDate.Value)," "," 
AND (H_expiry_date <= '" & UCase(Format(Parameters!pTDate.Value,"dd-MMM-yyyy")) & "' OR H_expiry_date IS NULL)" ) & iif(Parameters!p_PC.Value="ALL"," "," AND PC = '" & Parameters!p_PC.Value & "' ")
和PTE_code='“&Parameters!p_TE.Value&'”&“
以及(''“&Join(Parameters!p_TY.Value,'','')&')“&Iif(IsNothing(Parameters!pFDate.Value),”,”中的PTY_代码
和(H_expiration_date>='”&UCase(格式(参数!pFDate.Value,“dd-MMM-yyyy”)&“或H_expiration_date为空)”)&Iif(无任何内容(参数!pTDate.Value),“”

和(H_expiration_date如果其中有双引号,则SQL查询字符串将在Reporting Services中合成。单引号作为查询字符串的一部分发送到DB服务器,对字符串进行分隔:因此这实际上会发送一个类似以下内容的查询:

AND PTE_code = 'p_TEValue' 
AND PTY_code IN ('p_TYValue1','p_TYValue2') 
AND (H_expiry_date >= 'pFDateValueFormatted' OR H_expiry_date IS NULL) 
AND (H_expiry_date <= 'pTDateValueFormatted' OR H_expiry_date IS NULL)
AND PC = 'p_PCValue'
和PTE_code='p_TEValue'
和中的PTY_代码('p_TYValue1','p_TYValue2')
和(H_到期日>='pFDateValueFormatted'或H_到期日为空)

和(H_expiration_date)非常感谢Jamie的帮助。我需要重写条件,因为我的用户希望p_PCValue参数是一个多选参数。我不知道如何结束整个查询,查询以=“Select…”开始,然后以&iif(Parameters!p_PC.Value=“ALL”、“”和PC=”结束“&Parameters!p_PC.Value&'”)我需要重写条件的最后一部分,因为我的用户希望p_PCValue参数是一个多选参数。我重新编写了-->&iif(Parameters!p_PC.Value=“ALL”、“”、”和PC=”&Parameters!p_PC.Value&“”)到-->和PC-IN(“&Join(Parameters!p_PC.Value,”、”)&“)然后我收到了数据集错误。你能帮忙吗?这与你原来的问题不同。你应该为此开始一个新问题。(堆栈溢出尝试使所有答案与所写的问题匹配。)此外,投票选出有用的答案并接受正确的答案对社区有帮助。